我有一个按照给定顺序为表中的所有行调用的过程列表.我想将它们全部添加到一个单独的表中,而不是硬编码过程调用,并遍历包含调用每个过程的过程的行.所有过程都需要相同的输入参数.
这是可能吗?
假设你有这张桌子:
create table procs(procName) as (
select 'proc1' from dual union all
select 'proc2' from dual union all
select 'proc3' from dual
)
Run Code Online (Sandbox Code Playgroud)
和这些程序:
create or replace procedure proc1(p1 in varchar2, p2 in number) is begin dbms_output.put_line('running Proc1(' || p1 || ', ' || p2 || ')'); end;
create or replace procedure proc2(p1 in varchar2, p2 in number) is begin dbms_output.put_line('running Proc2(' || p1 || ', ' || p2 || ')'); end;
create or replace procedure proc3(p1 in varchar2, p2 in number) is begin dbms_output.put_line('running Proc3(' || p1 || ', ' || p2 || ')'); end;
Run Code Online (Sandbox Code Playgroud)
你可以尝试:
declare
yourParameter1 varchar2(10) := 'X';
yourParameter2 number := 10;
begin
for i in ( select procName from procs order by procName) loop
execute immediate 'begin ' || i.procName || '(:1, :2); end;' using yourParameter1, yourParameter2;
end loop;
end;
Run Code Online (Sandbox Code Playgroud)
你得到什么:
running Proc1(X, 10)
running Proc2(X, 10)
running Proc3(X, 10)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
304 次 |
| 最近记录: |