从表中的列表中选择存储过程并在oracle数据库中执行的存储过程?
如果是,存储过程是否可能从表中的列表中选择一个存储过程,然后在oracle db中执行它?如果是,该存储过程的语法是什么样子的?该存储过程应该使用从表中的列表中选择存储过程并在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
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的模式相同?如果没有,那么您可能需要在表或代码中追加模式名称。我同意,我将添加模式名称。应该这样做。该进程不需要任何参数,事实上,将插入到此表中的所有进程都不需要参数。