Oracle 动态SQL有两种写法:用 DBMS_SQL 或 execute immediate,建议使用后者。试验步骤如下:
1. DDL 和 DML
/*** DDL ***/
begin
EXECUTE IMMEDIATE 'drop table temp_1';
EXECUTE IMMEDIATE 'create table temp_1(name varchar2(8))';
end;
/*** DML ***/
declare
v_1 varchar2(8);
v_2 varchar2(10);
str varchar2(50);
begin
v_1:='测试人员';
v_2:='北京';
str := 'INSERT INTO test (name ,address) VALUES (:1, :2)';
EXECUTE IMMEDIATE str USING v_1, v_2;
commit;
end;
2. 返回单条结果
declare
str varchar2(500);
c_1 varchar2(10);
r_1 test%rowtype;
begin
c_1:='测试人员';
str:='select * from test where name=:c WHERE ROWNUM=1';
execute immediate str into r_1 using c_1;
DBMS_OUTPUT.PUT_LINE(R_1.NAME||R_1.ADDRESS);
end ;
3. 返回结果集
CREATE OR REPLACE package pkg_test as
/* 定义ref cursor类型
不加return类型,为弱类型,允许动态sql查询,
否则为强类型,无法使用动态sql查询;
*/
type myrctype is ref cursor;
--函数申明
function get(intID number) return myrctype;
end pkg_test;
/
CREATE OR REPLACE package body pkg_test as
--函数体
function get(intID number) return myrctype is
rc myrctype; --定义ref cursor变量
sqlstr varchar2(500);
begin
if intID=0 then
--静态测试,直接用select语句直接返回结果
open rc for select id,name,sex,address,postcode,birthday from student;
else
--动态sql赋值,用:w_id来申明该变量从外部获得
sqlstr := 'select id,name,sex,address,postcode,birthday from student where id=:w_id';
--动态测试,用sqlstr字符串返回结果,用using关键词传递参数
open rc for sqlstr using intid;
end if;
return rc;
end get;
end pkg_test;
/
分享到:
相关推荐
本文详细介绍了如何使用 Oracle SQL Developer 和其他开发工具,包括 Oracle Database Home Page 的使用方法、如何在 Oracle 中使用 SQL*Plus、如何使用 SQL Developer 操作 Oracle 数据库以及如何执行 SQL 语句等...
使用动态SQL需要注意性能问题,因为每次执行都要在运行时解析和编译SQL语句。如果频繁执行,可能会增加数据库的开销。为优化性能,可以考虑使用预编译的游标(如`DBMS_SQL`包)或者存储过程来缓存SQL语句。 此外,...
本篇文章主要介绍了如何在PL/SQL中使用动态SQL,包括两种主要方法:本地动态SQL和DBMS_SQL包。 首先,让我们了解一下静态SQL与动态SQL的区别。静态SQL是指在编写PL/SQL块时已经明确的SQL语句,它们在编译时就已经...
在Oracle数据库管理中,动态执行SQL语句是一种强大的功能,允许开发者在运行时构建和执行SQL语句,这对于处理不确定或变化的数据结构尤其有用。本文将深入探讨Oracle中动态执行SQL的四种主要方法,并通过具体示例...
Oracle 动态SQL是数据库编程中的一个重要概念,它允许在运行时构建和执行SQL语句,从而提高了灵活性和适应性。...正确理解和使用动态SQL可以极大地增强数据库应用程序的功能和适应性,但同时也需要注意安全性和性能。
通过学习本书,读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法,而且可以掌握sql语句和pl/sql的各种基础知识和高级特征(记录...
在Oracle中,可以使用动态游标来实现动态SQL。动态游标是指可以在程序中动态生成的游标,它可以根据不同的条件和参数生成不同的SQL语句。 例如,以下是使用动态游标实现Sql的示例代码: ``` DECLARE TYPE i_...
接下来,通过几个具体示例来展示如何使用动态SQL解决实际问题。 **示例一:创建表并插入数据** 首先,创建一个名为`EMP`的表,并向其中插入数据。 ```sql CREATE OR REPLACE PROCEDURE CREATE_TABLE AS BEGIN ...
这款工具在Oracle数据库环境中扮演着重要角色,它可以帮助用户实时监控SQL语句的执行情况,识别性能瓶颈,从而提高系统的整体效率。 在描述中提到,SQLTracker可以在Windows 11操作系统上直接运行,这意味着它可能...
oracle 中的SQL语言基础 oracle 中的SQL语言基础
oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具...
通过学习本书,读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法,而且可以掌握sql语句和pl/sql的各种基础知识和高级特征(记录...
在处理动态SQL时,如果有需要绑定参数,则可以在EXECUTE IMMEDIATE命令中使用USING子句,将SQL语句中的占位符替换为具体的参数值。如果是执行包含RETURNING子句的非查询DML语句,则可以使用RETURNING INTO子句来获取...
- 数组操作:包括赋值、索引访问、遍历数组等操作,以及如何在PL/SQL块中使用数组。 3. 游标: - 游标的概念:游标允许我们按需逐行处理查询结果,而非一次性加载所有数据,这对于大数据量操作非常有用。 - 游标...
在“Oracle-SQL.rar”这个压缩包中,包含了一份名为“Oracle SQL.ppt”的文件,这可能是一个PowerPoint演示文稿,用于详细讲解Oracle数据库的基础知识和SQL语言的使用。下面,我们将深入探讨一些Oracle SQL的基础...
在Oracle SQL中,有以下几个关键知识点: 1. **数据类型**:Oracle支持多种数据类型,包括数值型(如NUMBER)、字符串型(如VARCHAR2和CHAR)、日期/时间型(如DATE)、二进制大对象(BLOB)等。理解这些数据类型...
本篇将详细介绍如何使用SqlDbx连接到Oracle数据库,以及涉及的相关文件及其作用。 首先,连接Oracle数据库通常需要Oracle客户端软件,但这里提到的“Sqldbx连接oracle,不用安装client”,意味着SqlDbx可能通过一种...
本文档将深入讲解Oracle SQL Developer的使用方法,帮助用户充分利用这款工具提升工作效率。 1. **安装与启动** - 下载:首先,你需要从Oracle官网下载最新版本的SQL Developer安装包。 - 安装:按照安装向导的...
本文将详细讲解如何使用Microsoft SQL Server Migration Assistant for Oracle.exe(微软数据库迁移工具)将Oracle数据库迁移到SQL Server。该工具可以帮助用户快速、安全地将Oracle数据库迁移到SQL Server中。 一...