存储过程从表中的列表中选择存储过程并在oracle db中执行它?

时间:2015-11-12 15:51:50

标签: oracle procedures

是否可能,如果是的话,存储过程的语法是什么样的,它将从表中的列表中选择存储过程然后在oracle db中执行它?

1 个答案:

答案 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