我现在有一张表记录了存储过程的名字,参数是固定的
如何能够在另外一个存储过程中,在通过cursor得到存储过程名称后,动态调用
我查看了oracle的帮助手册里面说的方法是
stmt:='call '||spname||' (:param1,:param2)';
execute immediate stmt using param1,param2
单结果不行
如何能够在另外一个存储过程中,在通过cursor得到存储过程名称后,动态调用
我查看了oracle的帮助手册里面说的方法是
stmt:='call '||spname||' (:param1,:param2)';
execute immediate stmt using param1,param2
单结果不行
已写入文件 afiedt.buf 1 create or replace procedure show_str(
2 str in varchar2
3 )
4 as
5 begin
6 dbms_output.put_line(str);
7* end;
SQL> /过程已创建。SQL> create table procedure_table(procedure_name varchar2(40));表已创建。SQL> insert into procedure_table values('show_str');已创建 1 行。
SQL> ed
已写入文件 afiedt.buf 1 declare
2 parameter varchar2(50):='I like oracle!';
3 str varchar2(50);
4 begin
5 for x in (select * from procedure_table) loop
6 str:='call '||x.procedure_name||'(:v1)';
7 dbms_output.put_line(str);
8 execute immediate str using parameter;
9 end loop;
10* end;
SQL> /
call show_str(:v1)
I like oracle!PL/SQL 过程已成功完成。
如果有的话,调用的时候也要加上
例如:
execute immediate stmt using in out param1,param2;