欢迎来到天天文库
浏览记录
ID:38583574
大小:29.50 KB
页数:4页
时间:2019-06-15
《oracle中execute immediate的使用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
executeimmediate的语法如下:executeimmediate'sql';executeimmediate'sql_select'intovar_1,var_2;executeimmediate'sql'using[in|out|inout]bind_var_1,[in|out|inout]bind_var_2;executeimmediate'sql_select'intovar_1,var_2using[in|out|inout]bind_var_1,[in|out|inout]bind_var_2;executeimmediate'sql'returningintovar_1;executeimmediate'sql'bulkcollectintoindexed_var;用法实例:Declare v_tablevarchar2(20); v_sqlVarchar2(100); Begin v_table:='hqf.testtable'; v_sql:='select*from'||v_table; dbms_output.put_line(v_table); dbms_output.put_line(v_sql); ExecuteImmediatev_sql; End;Declare v_sidInteger:=20020101; v_sqlVarchar2(100); v_resultVarchar2(50);Begin --v_sid:=12; v_sql:='Selectlocintov_resultfromscott.deptdwhered.deptno=:1'; dbms_output.put_line(v_sql); --dbms_output.put_line(v_result); ExecuteImmediatev_sql Using10; Commit;End;--动态命令的实用参考一(select..into)--Executeimmediate命令在使用into关键字时与静态的plsql块中--into关键字使用方法上的区别。 declarev_resultvarchar2(20);beginexecuteimmediate'selectdnamefromscott.deptdwhered.deptno=:1'Intov_result --:1这是一个绑定变量Using70;commit;dbms_output.put_line('结果为:'||v_result);end;--绑定变量,通俗的讲就是一个占位的参数,而后用using中的常量或着变量去找它的相应Declarev_resultVarchar2(20);Begin SelectdnameIntov_resultFromscott.deptdWhered.deptno=10; dbms_output.put_line(v_result);End;declarev_resultvarchar2(20);beginexecuteimmediate'selectdnamefromscott.deptdwhered.deptno=:1'Intov_resultUsing70;commit;dbms_output.put_line('结果为:'||v_result);end;--动态命令的实用参考一(insert..into)--Begin ExecuteImmediate'insertintoscott.deptvalues(:1,:2,:3)' Using70,'IT','Beijing'; Commit;End;declare l_depnamvarchar2(20):='testing'; l_loc varchar2(10):='Dubai'; begin executeimmediate'insertintoscott.deptvalues (:1,:2,:3)' using60,l_depnam, l_loc; commit;end;---尽享动态执行sql的executeimmediate的命令使用的魅力。--对比静态的测试,和动态测试。Declarev_resultVarchar2(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*FromstudentsWheres.student_id=20020101;---Select*FromtesttableWhererecordnumber=10;Declarev_resultVarchar2(20);Begin --动态执行函数 ExecuteImmediate'begin:1:=mypackage.myfun1(:2);end;' UsingOutv_result,In10; Commit; dbms_output.put_line(v_result); --动态执行存储过程 ExecuteImmediate'beginmypro1(:1,:2);end;' UsingIn20020101,Outv_result; Commit; dbms_output.put_line(v_result);End;--动态执行update语句实例:createorreplacefunctionf_testweekdayreturnintegeris v_sql varchar(2000); i_sendcount integer;begin--_'||f_getweekday()|| ' v_sql:='updatet_push_smstemp_informsetsendcount=sendcount+1returningsendcountinto:1'; executeimmediatev_sqlusingouti_sendcount; return0;exception whenothersthen rollback; return0;endf_testweekday;
此文档下载收益归作者所有
举报原因
联系方式
详细说明
内容无法转码请点击此处