gpt4 book ai didi

oracle - 使用名称的字符串表示调用 PLSQL 存储过程

转载 作者:行者123 更新时间:2023-12-01 15:42:41 26 4
gpt4 key购买 nike

我有一个过程列表,要按给定顺序为表中的所有行调用。我不想对过程调用进行硬编码,而是想将它们全部添加到一个单独的表中,并循环遍历包含调用每个过程的过程的行。所有过程都需要相同的输入参数。

这有可能吗?

最佳答案

假设你有这张表:

create table procs(procName) as (
select 'proc1' from dual union all
select 'proc2' from dual union all
select 'proc3' from dual
)

以及这些程序:

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;

你可以试试:

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;

你得到了什么:

running Proc1(X, 10)
running Proc2(X, 10)
running Proc3(X, 10)

关于oracle - 使用名称的字符串表示调用 PLSQL 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42117006/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com