Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从表中的列表中选择存储过程并在oracle数据库中执行的存储过程?_Oracle_Procedures - Fatal编程技术网

从表中的列表中选择存储过程并在oracle数据库中执行的存储过程?

从表中的列表中选择存储过程并在oracle数据库中执行的存储过程?,oracle,procedures,Oracle,Procedures,如果是,存储过程是否可能从表中的列表中选择一个存储过程,然后在oracle db中执行它?如果是,该存储过程的语法是什么样子的?该存储过程应该使用EXECUTE IMMEDIATE来执行一个带有过程名称的匿名PL/SQL块。这可以像创建一个字符串一样简单,比如beginproc\u name;结束。如果有参数和返回值,事情就会变得更加困难 create table proc_table(id number, procedure_name varchar2(100)); insert into p

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

该存储过程应该使用
EXECUTE IMMEDIATE
来执行一个带有过程名称的匿名PL/SQL块。这可以像创建一个字符串一样简单,比如
beginproc\u name;结束。如果有参数和返回值,事情就会变得更加困难

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

我收到此错误PLS-00201:当我在代码的这一部分中替换“proc1”时,必须声明标识符“IC_代表_蓝_金_SOC_谢谢”:插入到proc_表值中(1,“IC_代表_蓝_金_SOC_谢谢”)@darlenelevielle这个过程需要任何参数吗?如果是这样,您可能需要向表和执行代码中添加一些信息。它是否与运行PL/SQL的模式相同?如果没有,那么您可能需要在表或代码中追加模式名称。我同意,我将添加模式名称。应该这样做。该进程不需要任何参数,事实上,将插入到此表中的所有进程都不需要参数。