Oracle For 루프에서 n 개의 작업을 만듭니다. 생성 된 각 작업의 시작 날짜는 이전 작업으로부터 10 초 간격입니다. 그러나 어떤 이유로 각 작업은 서로 1 초 이내에 시작됩니다. Oracle에서 향후 작업을 수행 할 수 없습니까? 내가 LTIMESTAMP 같은데요시작 날짜 매개 변수에 따라 Oracle 작업이 시작되지 않습니다
LTIMESTAMP := SYSTIMESTAMP;
FOR REC IN (SELECT *
FROM ORDERS
WHERE PROCESS_FLAG = CST_IS_ELIGIBLE_FOR_PROCESSING
ORDER BY ORDER_DATE ASC)
LOOP
LJOBNAME := CST_JOB_NAME_PREFIX || TO_CHAR(REC.ORDER_ID);
DBMS_SCHEDULER.CREATE_PROGRAM(PROGRAM_NAME => CST_PROGRAM_NAME,
PROGRAM_ACTION => 'PKG_BATCH_MAIN.SP_START_JOB',
PROGRAM_TYPE => 'STORED_PROCEDURE',
NUMBER_OF_ARGUMENTS => 2,
ENABLED => FALSE);
DBMS_SCHEDULER.DEFINE_PROGRAM_ARGUMENT(PROGRAM_NAME => CST_PROGRAM_NAME,
ARGUMENT_POSITION => 1,
ARGUMENT_TYPE => 'NUMBER');
DBMS_SCHEDULER.DEFINE_PROGRAM_ARGUMENT(PROGRAM_NAME => CST_PROGRAM_NAME,
ARGUMENT_POSITION => 2,
ARGUMENT_TYPE => 'NUMBER');
DBMS_SCHEDULER.ENABLE(CST_PROGRAM_NAME);
DBMS_SCHEDULER.CREATE_JOB(JOB_NAME => LJOBNAME,
PROGRAM_NAME => CST_PROGRAM_NAME,
START_DATE => LTIMESTAMP,
REPEAT_INTERVAL => 'FREQ=SECONDLY; BYSECOND=1',
END_DATE => NULL,
AUTO_DROP => TRUE,
ENABLED => FALSE,
COMMENTS => 'Job launched for each ORDER detail id');
DBMS_SCHEDULER.SET_ATTRIBUTE(LJOBNAME,
'MAX_RUNS',
1);
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(LJOBNAME,
1,
TO_CHAR(REC.ORDER_ID));
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(LJOBNAME,
2,
TO_CHAR(REC.ORDER_DETAILS_ID));
DBMS_SCHEDULER.ENABLE(LJOBNAME);
LTIMESTAMP := LTIMESTAMP + INTERVAL '10' SECOND;
END LOOP;
작성한 코드를 표시 할 수 있습니까? – Nitish
일부 작업에 대해 DBA_SCHEDULER_JOB_RUN_DETAILS에서 'LOG_DATE, REQ_START_DATE, ACTUAL_START_DATE, RUN_DURATION'을 (를) 제공 할 수 있습니까? – JSapkota