Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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_Oracle Sqldeveloper_Oracleforms - Fatal编程技术网

Oracle 如何提交函数并继续执行后续步骤,而不必等待该函数完成?

Oracle 如何提交函数并继续执行后续步骤,而不必等待该函数完成?,oracle,oracle-sqldeveloper,oracleforms,Oracle,Oracle Sqldeveloper,Oracleforms,我有这样一个代码: FOR i IN 1 .. 20 LOOP F(i); -- for each i, F(i) takes 20 minutes to be executed END LOOP; 我正在寻找一种在调用F(1)之后再调用F(2)的方法。我的意思是我不想等待F(1)成功执行,然后调用F(2) 我的目标是整个循环需要20分钟,而不是400分钟。在Oracle表单中实现此功能的最佳方法是什么 如果无法在表单中实现它,我可以创建一个pl/sql函数来实现这一点,然后从我的表单

我有这样一个代码:

FOR i IN 1 .. 20 
LOOP
   F(i); -- for each i, F(i) takes 20 minutes to be executed
END LOOP;
我正在寻找一种在调用F(1)之后再调用F(2)的方法。我的意思是我不想等待F(1)成功执行,然后调用F(2)

我的目标是整个循环需要20分钟,而不是400分钟。在Oracle表单中实现此功能的最佳方法是什么

如果无法在表单中实现它,我可以创建一个pl/sql函数来实现这一点,然后从我的表单中调用这个pl/sql函数

有人有什么好主意吗

谢谢!
MAX

异步作业可以使用JavaBean从Oracle窗体运行。有详细信息。

我将考虑提交一个立即运行一次的dbms\u作业,该作业将通过dbms作业调度器异步运行。正如你所说的,你不关心结果,如果你担心的话,这将是这个方法的一个大问题。下面是一个示例plsql块,您可以将其更改为循环中的单个dbms_作业行调用:

SQL> set serverout on
SQL> DECLARE
  2    jno BINARY_INTEGER;
  3  BEGIN
  4    dbms_job.submit(JOB       => jno,
  5                    WHAT      => 'declare X varchar2(200); BEGIN X := F(2) END;',
  6                    NEXT_DATE => SYSDATE);
  7    dbms_output.put_line(jno);
  8    COMMIT;  
  9  END;
 10  /
这里有一个很好的参考:


请记住,大多数DBA都会对可并发运行的并发dbms_作业的数量设置限制。

在PLSQL中说,如果这是纯oracle表单,则无法执行此操作:可能会有所帮助。F是纯PL/SQL函数。没有链接到作业。我们不能告诉oracle直接调用F,然后继续吗?!假设我不关心结果。我不能并行运行它们吗!?这是为Oracle和SQL Server标记的。你真的在寻找一个对两者都有效的解决方案吗?或者应该删除SQL Server标记,因为您实际上只是在查看Oracle。
f
是数据库中的存储过程吗?或者只是在Oracle Forms PL/SQL JVM中运行的PL/SQL函数?我试过了,但有些可疑。请看我在《确保在代码中加入“提交”一词》上的新帖子。确保dbms_作业调度程序正在会话中运行-“从所有_作业中选择*”。如果所有的作品,请接受答案和标记。