작업 Oracle에서 프로 시저 X를 실행하는 데 어려움이 있습니다. 프로 시저 X에서는 각 작업을 호출합니다. 여기프로 시저 실행 다른 작업을 호출하는 작업이있는 PL/SQL Oracle
은 내 코드 (실행중인 작업)입니다 :
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
(job => X
,what => 'begin
ss_run_all_jobs3;
end;'
,next_date => to_date('01/01/4000 00:00:00','dd/mm/yyyy hh24:mi:ss')
,interval => 'SYSDATE+2.5/1440 '
,no_parse => FALSE
);
SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
SYS.DBMS_JOB.BROKEN
(job => X,
broken => TRUE);
COMMIT;
END;
/
절차의 SS_RUN_ALL_JOBS3;
/*other script ... */
BEGIN ss_print_all; END;
/*other script ... */
절차 ss_print_all
CREATE OR REPLACE PROCEDURE SEAT.ss_print_all
IS
l_jobno pls_integer;
BEGIN
dbms_job.submit(l_jobno, 'begin ss_print_1; end;' ,sysdate);
dbms_job.submit(l_jobno, 'begin ss_print_2; end;' ,sysdate);
dbms_job.submit(l_jobno, 'begin ss_print_3; end;' ,sysdate);
dbms_job.run(l_jobno);
END;
/
vname := 'RUNPRINT_SEATFRONT';--||vcounter;
--DBMS_SCHEDULER.drop_job(vname);
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 => '"'||xxx.txt||'"');
dbms_scheduler.enable(vname);
ss_print_1 예를 들어 각 절차 PL/SQL 편집기 (두꺼비 편집기)에서이 실행되는 경우 잘 실행 , 작업 (첫 번째 코드)을 사용하여 실행 중이면 오류가 발생합니다
13:12:05 Info: Job #442 could not be executed. ORA-12011: execution of 1 jobs failed
ORA-06512: at "SYS.DBMS_IJOB", line 651
ORA-06512: at "SYS.DBMS_JOB", line 284
ORA-06512: at line 1
첫 번째 작업이 아직 처리 중이기 때문입니까?
감사합니다 ..