我目前正在使用:
BEGIN
PACKAGE1.PROCEDURE1('PARAM_1','PARAM_A','PARAM_B');
END;
我需要多次运行相同的过程(Oracle),但这次只更改第一个参数,例如:
PACKAGE1.PROCEDURE1('PARAM_2','PARAM_A','PARAM_B');
PACKAGE1.PROCEDURE1('PARAM_3','PARAM_A','PARAM_B');
我怎样才能做到这一点?提前谢谢。
答案 0 :(得分:0)
在匿名plsql块中写一个迭代次数的循环取决于你想要调用多少个参数的程序。在循环的顶部放置将设置参数的逻辑,然后用它调用过程。但请记住,在程序运行期间,plsql中没有选项可以从控制台或用户读取数据。 //我认为你可以问一下每次循环传递一个其他变量,我不确定是不是可以在plsql中完成你可以尝试使用
execute_immidiate
命令,字符串conncatenate作为参数名称。
答案 1 :(得分:0)
你的程序包程序必须是IN OUT参数,我假设第一个参数是IN,所以主人应该处理为此提供值的事情。
程序正在按预期工作,现在来自外部源或其他传递机制的外部传入流必须采取。
只需将这些程序与此程序包对齐,您可以根据IN的需要多次调用此程序。
答案 2 :(得分:0)
如果要同时运行相同的过程,可以尝试将其作为作业提交。
BEGIN
begin
dbms_scheduler.create_job
(
job_name => 'One_Time_Job_1',
job_type => 'PLSQL_BLOCK',
job_action => 'begin PACKAGE1.PROCEDURE1('PARAM_2','PARAM_A','PARAM_B'); end;',
start_date => sysdate,
enabled => TRUE,
auto_drop => TRUE,
comments => 'one-time job');
end;
begin
dbms_scheduler.create_job
(
job_name => 'One_Time_Job_2',
job_type => 'PLSQL_BLOCK',
job_action => 'begin PACKAGE1.PROCEDURE1('PARAM_3','PARAM_A','PARAM_B'); end;',
start_date => sysdate,
enabled => TRUE,
auto_drop => TRUE,
comments => 'one-time job');
end;
END;
查看DBMS_SCHEDULER了解更多详情。
答案 3 :(得分:0)
如果这是针对具有固定数量并行程序的持续生产流程,我会考虑使用调度程序链。
这将同时执行所有过程,并为您提供额外的功能,例如: