我创建了一个DBMS_SCHEDULER来从PL / SQL运行批处理脚本。 该脚本按预期启动,但是现在我需要找到一种方法来暂停我的PL / SQL代码,直到批处理脚本完成工作为止。我的批处理类似
之后,我的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。
答案 0 :(得分:1)
您可以做的是创建一个包含一列的表,该表将保存计划程序执行的值。将所有PL / SQL代码放在if-else中,该if-else检查该表中的值。如果值为true,则代码将按要求执行;如果值为false,则仅完成执行而无需执行任何操作。因此,当您的批处理脚本开始将表中的值更新为false时,因此每次调度程序运行时它将显示为false并不执行任何操作退出,在批处理脚本结束时将值更新为true,以便下次调度程序运行将按要求执行
希望有帮助。