是否可能,如果是的话,存储过程的语法是什么样的,它将从表中的列表中选择存储过程然后在oracle db中执行它?
答案 0 :(得分:0)
存储过程应使用EXECUTE IMMEDIATE
执行带有过程名称的匿名PL / SQL块。这可以像创建像begin proc_name; end;
这样的字符串一样简单。如果有参数和返回值,事情会变得更加困难。
create table proc_table(id number, procedure_name varchar2(100));
insert into proc_table values(1, 'proc1');
insert into proc_table values(2, 'proc2');
create or replace procedure proc1 is begin dbms_output.put_line('1'); end;
/
create or replace procedure proc2 is begin dbms_output.put_line('2'); end;
/
begin
for procedures in
(
select procedure_name
from proc_table
order by procedure_name
) loop
execute immediate 'begin '||procedures.procedure_name||'; end;';
end loop;
end;
/
Output:
1
2