oracle中execute immediate的使用(select/insert/update/delete)详解
(2013-08-07 11:15:00)
标签:
executeexecuteimmediateoraclesql执行sql语句it |
oracle中execute immediate的使用(select/insert/update/delete)
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
Declare
Begin
End;
--动态命令的实用参考一( select ..into)
--Execute immediate 命令在使用into关键字时与静态的plsql块中
--into关键字使用方法上的区别。
declare
v_result varchar2(20);
begin
execute immediate 'select dname from scott.dept d where
d.deptno=:1' Into v_result
Using 70;
commit;
dbms_output.put_line('结果为:'||v_result);
end;
--绑定变量,通俗的讲就是一个占位的参数,而后用using中的常量或着变量去找它的相应
Declare
v_result Varchar2(20);
Begin
End;
declare
v_result varchar2(20);
begin
execute immediate 'select dname from scott.dept d where
d.deptno=:1' Into v_result
Using 70;
commit;
dbms_output.put_line('结果为:'||v_result);
end;
--动态命令的实用参考一( insert ..into)
--
Begin
End;
declare
end;
---尽享动态执行sql的execute immediate的命令使用的魅力。
--对比静态的测试,和动态测试。
Declare
v_result Varchar2(20);
Begin
v_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;
Declare
v_result Varchar2(20);
Begin
End;
--动态执行update语句实例:
create or replace function f_testweekday
return integer
is
begin
--_' || f_getweekday() || '
exception
end f_testweekday;