我有一些使用 DBMS_SCHEDULER 运行 bat 文件窗口的脚本。但是当有多个数据循环时会出现一些错误。
CREATE OR REPLACE procedure SEAT.ss_print_fundoshi_run_weld_tst (ptype varchar2)
is
cursor c_data is
select * from ss_print_fundoshi_tmp_file
where vdesc = ptype
order by vno;
vname varchar2(100);
v_dir varchar2(200) := 'SEATMAP';
fhandle UTL_FILE.FILE_TYPE;
BEGIN
for i in c_data loop
vname := 'RUNPRINT_WELD';-;
dbms_scheduler.drop_job (vname);
dbms_scheduler.create_job(
job_name => vname,
job_type => 'EXECUTABLE',
job_action => 'C:\Windows\System32\cmd.exe',
job_class => 'DEFAULT_JOB_CLASS',
--comments => 'test job',
auto_drop => false,
number_of_arguments => 3,
enabled => FALSE);
dbms_scheduler.set_job_argument_value( job_name => vname, argument_position => 1, argument_value => '/q');
dbms_scheduler.set_job_argument_value( job_name => vname, argument_position => 2, argument_value => '/c');
dbms_scheduler.set_job_argument_value( job_name => vname, argument_position => 3, argument_value => '"'||i.vfile||'"');
dbms_scheduler.enable( vname);
dbms_lock.sleep(5);
end loop;
END;
但是因为有几个数据,所以作业一直说作业名称为 RUNPRINT_WELD 的作业仍在运行,所以它不能丢弃作业。
如果只有一排,则运行良好。
什么是最好的解决方案?Tq