PLSQL DBMS_SCHEDULER等待响应

时间:2019-06-24 07:08:32

标签: oracle batch-file plsql

我创建了一个DBMS_SCHEDULER来从PL / SQL运行批处理脚本。 该脚本按预期启动,但是现在我需要找到一种方法来暂停我的PL / SQL代码,直到批处理脚本完成工作为止。我的批处理类似

  • 读取数量为x的csv文件
  • 将csv值复制到现有的Excel文件中
  • 压缩这些文件。

之后,我的PL / SQL代码应该重新开始。批处理过程可能需要几秒钟到一小时,具体取决于值的数量。有没有办法暂停脚本并等待响应?

这是我的代码

BEGIN
   DBMS_SCHEDULER.create_job ('myjob',
                              job_action            => 'C:\WINDOWS\SYSTEM32\CMD.EXE',
                              number_of_arguments   => 3,
                              job_type              => 'executable',
                              enabled               => FALSE);

   DBMS_SCHEDULER.set_job_argument_value ('myjob', 1, '/q');

   DBMS_SCHEDULER.set_job_argument_value ('myjob', 2, '/c');

   DBMS_SCHEDULER.set_job_argument_value ('myjob', 3, 'c:\temp\test.bat');

   DBMS_SCHEDULER.enable ('myjob');
END;

我正在使用Oracle 11g。

1 个答案:

答案 0 :(得分:1)

您可以做的是创建一个包含一列的表,该表将保存计划程序执行的值。将所有PL / SQL代码放在if-else中,该if-else检查该表中的值。如果值为true,则代码将按要求执行;如果值为false,则仅完成执行而无需执行任何操作。因此,当您的批处理脚本开始将表中的值更新为false时,因此每次调度程序运行时它将显示为false并不执行任何操作退出,在批处理脚本结束时将值更新为true,以便下次调度程序运行将按要求执行

希望有帮助。