




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
存储过程例子 里边的sql语句 需要拼写成 字符串的格式:create or replace procedure Prc_Update_Record(LICENSE_NUMBER in varchar2,LICENSE_START in varchar2,LICENSE_END in varchar2,REGIONSTR in varchar2,SPESTR in varchar2,YEARSTR in varchar2,NUM in varchar2,ID in varchar2,tp in varchar2 ) isv_sql varchar2(4000);BEGIN if tp=01 then -更新表T_LICE_PUBLIC_PLACE v_sql:=Update adminlice.T_LICE_PUBLIC_PLACE t set t.license_number=|LICENSE_NUMBER|,t.license_start=|LICENSE_START|,t.license_end=|LICENSE_END |,t.regionstr=|REGIONSTR|,t.spestr=|SPESTR|,t.yearstr=|YEARSTR|,t.num=|NUM| where t.id=|ID|; DBMS_OUTPUT.PUT_LINE( Number of employees with higher salary: | ID |LICENSE_NUMBER: |LICENSE_NUMBER ); execute immediate v_sql; commit; end if; END Prc_Update_Record;execute immediate的语法如下:execute immediate sql;execute immediate sql_select into var_1, var_2;execute immediate sql using in|out|in out bind_var_1, in|out|in out bind_var_2;execute immediate sql_select into var_1, var_2 using in|out|in out bind_var_1, in|out|in out bind_var_2;execute immediate sql returning into var_1;execute immediate sql bulk collect into indexed_var;用法实例:Declare v_table varchar2(20); v_sql Varchar2(100); Begin v_table:=hqf.testtable; v_sql:=select * from |v_table; dbms_output.put_line(v_table); dbms_output.put_line(v_sql); Execute Immediate v_sql; End;Declare v_sid Integer:=20020101; v_sql Varchar2(100); v_result Varchar2(50);Begin -v_sid:=12; v_sql:=Select loc into v_result from scott.dept d where d.deptno=:1 ; dbms_output.put_line(v_sql); -dbms_output.put_line(v_result); Execute Immediate v_sql Using 10 ; Commit;End;-动态命令的实用参考一( select .into)-Execute immediate 命令在使用into关键字时与静态的plsql块中-into关键字使用方法上的区别。declarev_result varchar2(20);beginexecute immediate select dname from scott.dept d where d.deptno=:1 Into v_result -:1这是一个绑定变量Using 70;commit;dbms_output.put_line(结果为:|v_result);end;-绑定变量,通俗的讲就是一个占位的参数,而后用using中的常量或着变量去找它的相应Declarev_result Varchar2(20);Begin Select dname Into v_result From scott.dept d Where d.deptno=10; dbms_output.put_line(v_result);End;declarev_result varchar2(20);beginexecute immediate select dname from scott.dept d where d.deptno=:1 Into v_resultUsing 70;commit;dbms_output.put_line(结果为:|v_result);end;-动态命令的实用参考一( insert .into)-Begin Execute Immediate insert into scott.dept values (:1,:2,:3) Using 70,IT,Beijing; Commit;End;declare l_depnam varchar2(20) := testing; l_loc varchar2(10) := Dubai; begin execute immediate insert into scott.dept values (:1, :2, :3) using 60, l_depnam, l_loc; commit;end;-尽享动态执行sql的execute immediate的命令使用的魅力。-对比静态的测试,和动态测试。Declarev_result Varchar2(20);Beginv_result:=mypackage.myfun1(10);dbms_output.put_line(v_result);mypackage.mypro1(20020101,v_result);dbms_output.put_line(v_result);End;-Select * From student s Where s.student_id=20020101;-Select * From testtable Where recordnumber=10;Declarev_result Varchar2(20);Begin -动态执行函数 Execute Immediate begin :1:=mypackage.myfun1(:2); end; Using Out v_result,In 10; Commit; dbms_output.put_line(v_result); -动态执行存储过程 Execute Immediate begin mypro1(:1,:2); end; Using In 20020101,Out v_result; Commit; dbms_output.put_line(v_result);End;-动态执行update语句实例:create or replace function f_testweekdayreturn integeris v_sql varchar(2000); i_sendcount integer;begin-_ | f_getweekday() | v_sql := update t_push_smstemp_inform set sendcount=sendcount+1 returning sendcount into :1; execute immediate v_sql using out i_sendcount;return 0;exception when others then rollback; return 0;end f_testweekday;oracle中execute immediate的使用文章分类:数据库 转至:/blog/354521EXECUTE IMMEDIATE代替了以前Oracle8i中DBMS_SQL package包.它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,EXECUTE IMMEDIATE的目标在于减小企业费用并获得较高的性能,较之以前它相当轻易编码.尽管DBMS_SQL仍然可用, 但是推荐使用EXECUTE IMMEDIATE,因为它获的收益在包之上。使用技巧1. EXECUTE IMMEDIATE将不会提交一个DML事务执行,应该显式提交假如通过EXECUTE IMMEDIATE处理DML命令,那么在完成以前需要显式提交或者作为EXECUTE IMMEDIATE自己的一部分. 假如通过EXECUTE IMMEDIATE处理DDL命令,它提交所有以前改变的数据2. 不支持返回多行的查询,这种交互将用临时表来存储记录(参照例子如下)或者用REF cursors.3. 当执行SQL语句时,不要用分号,当执行PL/SQL块时,在其尾部用分号.4. 在Oracle手册中,未具体覆盖这些功能。下面的例子展示了所有用到Execute immediate的可能方面.希望能给你带来方便.5. 对于Forms开发者,当在PL/SQL .版本中,Forms 6i不能使用此功能.EXECUTE IMMEDIATE用法例子1. 在PL/SQL运行DDL语句beginexecute immediate set role all;end;2. 给动态语句传值(USING 子句)declarel_depnam varchar2(20) := testing;l_locvarchar2(10) := Dubai;beginexecute immediate insert into dept values(:1, :2, :3)using 50, l_depnam, l_loc;commit;end;3. 从动态语句检索值(INTO子句)declarel_cntvarchar2(20);beginexecute immediate select count(1) from empinto l_cnt;dbms_output.put_line(l_cnt);end;4. 动态调用例程.例程中用到的绑定变量参数必须指定参数类型.黓认为IN类型,其它类型必须显式指定declarel_routin varchar2(100) := gen2161.get_rowcnt;l_tblnam varchar2(20) := emp;l_cntnumber;l_status varchar2(200);beginexecute immediate begin l_routin (:2, :3, :4); end;using in l_tblnam, out l_cnt, in out l_status;if l_status != OK thendbms_output.put_line(error);end if;end;5. 将返回值传递到PL/SQL记录类型;同样也可用%rowtype变量declaretype empdtlrec is record (empnonumber(4),enamevarchar2(20),deptnonumber(2);empdtl empdtlrec;beginexecute immediate select empno, ename, deptno from emp where empno = 7934into empdtl;end;6. 传递并检索值.INTO子句用在USING子句前declarel_deptpls_integer := 20;l_nam varchar2(20);l_loc varchar2(20);beginexecute immediate select dname, loc from dept where deptno = :1into l_nam, l_locusing l_dept ;end;7. 多行查询选项.对此选项用ins
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年火电电力职业鉴定试题预测试卷及参考答案详解(综合题)
- 重难点自考专业(行政管理)试题附完整答案【全优】
- 静脉采血知识培训
- 2026届浙江省湖州市南浔区实验学校九上化学期中检测模拟试题含解析
- 库卡机器人进阶培训
- 福建省泉州市第八中学2026届英语九上期末学业水平测试试题含解析
- 2026届江苏省常州市金坛区水北中学英语九上期末教学质量检测试题含解析
- 企业培训师上课
- 2026届山东省滨州市滨城区东城中学化学九年级第一学期期中统考试题含解析
- 2026届四川省成都市石室天府中学九年级化学第一学期期末复习检测试题含解析
- 淘宝客服管理制度+奖金
- TCCPEF 086-2024 生态环境数智化监测与预警技术规范
- 2025年志愿者服务日知识竞赛考试指导题库150题(含答案)
- K3ERPwise老单开发手册
- 诊断学黄疸课件
- 体积单位间的进率(说课稿)-2024-2025学年六年级上册数学苏教版
- 孕期营养管理如何兼顾宝宝和妈妈营养天津市职业病防治院营养科讲解
- 篮球场围网施工方案
- 办公设备供货服务方案
- 快递柜租赁合同
- 智能计算系统:从深度学习到大模型 第2版课件 6、第六章-面向深度学习的处理器原理
评论
0/150
提交评论