DBMS_SCHEDULER を使用してバット ファイル ウィンドウを実行するためのスクリプトがあります。ただし、複数のデータでループするとエラーが発生します。
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;
しかし、いくつかのデータがあるため、ジョブは job_name RUNPRINT_WELD のジョブがまだ実行中であると言い続けているため、ジョブをドロップできません。
行が 1 つしかない場合は、正常に動作しています。
これに対する最善の解決策は何ですか?Tq