知识大全 动态SQL和PL/SQL的EXECUTE IMMEDIATE选项

Posted 语句

篇首语:最强的人并不一定都是成功的人,却一定是在他们失去之时不放弃的人。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 动态SQL和PL/SQL的EXECUTE IMMEDIATE选项相关的知识,希望对你有一定的参考价值。

动态SQL和PL/SQL的EXECUTE IMMEDIATE选项  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  EXECUTE IMMEDIATE代替了以前Oracle i中DBMS_SQL package包 它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块 动态创建和执行SQL语句性能超前 EXECUTE IMMEDIATE的目标在于减小企业费用并获得较高的性能 较之以前它相当容易编码 尽管DBMS_SQL仍然可用 但是推荐使用EXECUTE IMMEDIATE 因为它获的收益在包之上     使用技巧     EXECUTE IMMEDIATE将不会提交一个DML事务执行 应该显式提交  如果通过EXECUTE IMMEDIATE处理DML命令 那么在完成以前需要显式提交或者作为EXECUTE IMMEDIATE自己的一部分 如果通过EXECUTE IMMEDIATE处理DDL命令 它提交所有以前改变的数据     不支持返回多行的查询 这种交互将用临时表来存储记录(参照例子如下)或者用REF cursors      当执行SQL语句时 不要用分号 当执行PL/SQL块时 在其尾部用分号      在Oracle手册中 未详细覆蓋这些功能 下面的例子展示了所有用到Execute immediate的可能方面 希望能给你带来方便      对于Forms开发者 当在PL/SQL 版本中 Forms i不能使用此功能     EXECUTE IMMEDIATE用法例子     在PL/SQL运行DDL语句     begin   execute immediate set role all ;   end;     给动态语句传值(USING 子句)     declare   l_depnam varchar ( ) := testing ;   l_loc  varchar ( ) := Dubai ;   begin   execute immediate insert into dept values (: : : )     using l_depnam l_loc;   mit;   end;     从动态语句检索值(INTO子句)     declare   l_cnt  varchar ( );   begin   execute immediate select count( ) from emp     into l_cnt;   dbms_output put_line(l_cnt);   end;     动态调用例程 例程中用到的绑定变量参数必须指定参数类型 黓认为IN类型 其它类型必须显式指定     declare   l_routin  varchar ( ) := gen get_rowcnt ;   l_tblnam  varchar ( ) := emp ;   l_cnt   number;   l_status  varchar ( );   begin   execute immediate begin || l_routin || (: : : ); end;     using in l_tblnam out l_cnt in out l_status;     if l_status != OK then     dbms_output put_line( error );   end if;   end;     将返回值传递到PL/SQL记录类型;同样也可用%rowtype变量     declare   type empdtlrec is record (empno number( )                 ename varchar ( )                 deptno number( ));   empdtl empdtlrec;   begin   execute immediate select empno ename deptno ||            from emp where empno =     into empdtl;   end;     传递并检索值 INTO子句用在USING子句前     declare   l_dept  pls_integer := ;   l_nam   varchar ( );   l_loc   varchar ( );   begin   execute immediate select dname loc from dept where deptno = :     into l_nam l_loc    using l_dept ;   end;     多行查询选项 对此选项用insert语句填充临时表 用临时表进行进一步的处理 也可以用REF cursors纠正此缺憾       declare   l_sal  pls_integer := ;   begin   execute immediate insert into temp(empno ename) ||                 select empno ename from emp ||                 where sal > :     using l_sal;   mit;   end;    对于处理动态语句 EXECUTE IMMEDIATE比以前可能用到的更容易并且更高效 当意图执行动态语句时 适当地处理异常更加重要 应该关注于捕获所有可能的异常 cha138/Article/program/Oracle/201311/18008

相关参考

知识大全 带参数动态执行sql语句:Execute Immediate

带参数动态执行sql语句:ExecuteImmediate  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 PL/SQL基础教程(二)

PL/SQL基础教程(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  变量和常量  变量存放

知识大全 PL/SQL学习笔记(五)

PL/SQL学习笔记(五)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  创建和管理表  对象 

知识大全 PL/SQL最差实践

PL/SQL最差实践  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  超长的PL/SQL代码  影

知识大全 PL/SQL的几个概念区别

PL/SQL的几个概念区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  char和varcha

知识大全 PL/SQL程序结构(组图)

PL/SQL程序结构(组图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  什么是PL/SQL程

知识大全 pl/sql查询字段为科学计数法

  从pl/sql查询字段类型为number并且长度大于位的内容显示为科学计数法的计数方法  pl/sql  从pl/sql查询字段类型为number并且长度大于位的内容显示为科学计数法的计数方法后经

知识大全 PL/SQL中用光标查询多条记录

PL/SQL中用光标查询多条记录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PL/SQL光标

知识大全 PL/SQL用光标查询多条记录

PL/SQL用光标查询多条记录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PL/SQL光标为

知识大全 全面探讨PL/SQL的复合数据类型

全面探讨PL/SQL的复合数据类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PL/SQL有