知识大全 动态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基础教程(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 变量和常量 变量存放
PL/SQL学习笔记(五) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 创建和管理表 对象
PL/SQL最差实践 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 超长的PL/SQL代码 影
PL/SQL的几个概念区别 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! char和varcha
PL/SQL程序结构(组图) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 什么是PL/SQL程
从pl/sql查询字段类型为number并且长度大于位的内容显示为科学计数法的计数方法 pl/sql 从pl/sql查询字段类型为number并且长度大于位的内容显示为科学计数法的计数方法后经
PL/SQL中用光标查询多条记录 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! PL/SQL光标
PL/SQL用光标查询多条记录 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! PL/SQL光标为
全面探讨PL/SQL的复合数据类型 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! PL/SQL有