Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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_Plsql_Plsqldeveloper - Fatal编程技术网

是否在Oracle中同时运行相同的过程?

是否在Oracle中同时运行相同的过程?,oracle,plsql,plsqldeveloper,Oracle,Plsql,Plsqldeveloper,我目前正在使用: 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'); 我怎样才能做到这一点?提前谢谢。在匿名plsql块中,编写一个循环,循环

我目前正在使用:

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');

我怎样才能做到这一点?提前谢谢。

在匿名plsql块中,编写一个循环,循环次数取决于要调用过程的参数数量。在循环的顶部,放置将设置参数的逻辑,然后用它调用一个过程。但请记住,plsql中并没有在程序运行期间从控制台或用户读取数据的选项。 //我认为您可以询问每次在循环中传递另一个变量,我不确定它是否可以在plsql中完成,您可以尝试使用

执行命令


使用字符串conncatenate作为参数名的命令。

您的包过程必须带有IN-OUT参数,我假设第一个参数是IN,所以主程序应该负责向该参数提供值

程序正在按预期工作,现在必须接收来自外部源或其他传递机制的外部传入流


只需将它们与此程序包对齐,您就可以根据此takes中的内容随时调用此程序。

如果要同时运行同一程序,您可以尝试将其作为作业提交

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;

查看以了解更多详细信息

> P>如果这是一个有固定数量的并行程序的正在进行的生产过程,我会考虑使用一个调度链。 这将同时执行所有过程,并为您提供额外的功能,例如:

  • 当一个或所有过程完成时运行其他过程的能力
  • 根据程序的成功或失败,控制以后运行哪些程序

  • 在匿名区打三个电话?或者,如果第一个参数值来自数据库中的某个地方,请编写一个调用该过程的循环。您能举个简单的例子吗?哪种方法?一个例子需要理解需求,但我还没有。第一个参数的值是否来自数据库中的某个地方,以便您可以对其进行循环?你的标题是“同时”——你真的打算并行运行这些吗?它们是否被构建成可以被生成它们的线程监视?或者,您真的是想向数据库发出一个请求并连续多次运行该过程吗?我认为他的问题是更改参数名。如果是的话,看看我的answear about execute_immidate语句可能会很有帮助。不,我认为问题是同时运行它们。