EXEC PROCEDURE_A (MASTER_NUMBER.NEXTVAL, 01, '탱크', -10, 42, 'Y'); EXEC PROCEDURE_B (SYSDATE, 01, -15, 0, NULL, NULL); EXEC PROCEDURE_C (01); EXEC PROCEDURE_A (MASTER_NUMBER.NEXTVAL, 02, '자동차', 12, 26, 'Y'); EXEC PROCEDURE_B (SYSDATE, 02, 20, 0, NULL, NULL); EXEC PROCEDURE_C (02); EXEC PROCEDURE_A (MASTER_NUMBER.NEXTVAL, 03, '비행기', 5, 15, 'Y'); EXEC PROCEDURE_B (SYSDATE, 03, 13, 0, NULL, NULL); EXEC PROCEDURE_C (03); EXEC PROCEDURE_A (MASTER_NUMBER.NEXTVAL, 01, '탱크2', -10, 0, 'Y'); EXEC PROCEDURE_B (SYSDATE, 01, 2, 0, NULL, NULL); EXEC PROCEDURE_C (01); EXEC PROCEDURE_A (MASTER_NUMBER.NEXTVAL, 02, '자동차2', 17, 28, 'Y'); EXEC PROCEDURE_B (SYSDATE, 02, 8, 0, NULL, NULL); EXEC PROCEDURE_C (02); EXEC PROCEDURE_A (MASTER_NUMBER.NEXTVAL, 03, '비행기2', 17, 28, 'Y'); EXEC PROCEDURE_B (SYSDATE+1, 03, 8, 0, NULL, NULL); EXEC PROCEDURE_C (03);
------------------------------------------------------------------------------------------------------------
안녕하세요.
파라미터 값이 있는 프로시저를 이용한 잡스케쥴링에 대해 질문드립니다...
제가 지금 막히는 부분이..
위의 쿼리를 보시면 아시겠지만 세줄씩 띄어져 있습니다.
저 세줄을 한묶으로 보고
하나하나 잡스케줄러를 이용하여
1분마다 한 묶음씩 실행시키고 싶은데요..(파라미터 값이 각기 다릅니다.)
어떤식으로 잡을 등록하는게 나을까요?? 감이 안잡힙니다...
인자 값이 어떻게 들어오냐에 따라 다른 것 같습니다.
1분 마다 수시로 바뀌는 인자 값이 어플리케이션에서 전달하는 것이면
어플에서 프로시저를 호출하는 구조로 가야 될 것 같고요,
이 경우 DB Job가 무관하게 되고, 일정 시간 간격 수행은 어플에서 수행이 되어야 할 것 같습니다.
인자 값을 1분 간격으로 던지는 것이 어플인데 DB Job으로 처리하게 되면 복잡도가 2배로 될거 같습니다.
이런 경우가 아니라면
DB에서 1분 단위로 바뀌는 인자 값 발생 기준이 무엇인지 단서가 필요해보입니다.
이게 중요하지 않다면 그냥 3줄을 묶음으로 프로시저 하나 만들고
job으로 그 프로시저 콜만 해주는 구조로 가면 될 것 같습니다.
job과 procedure는 각 키워드로 검색하면 만드는 강좌가 많이 있습니다.
인자 값이 테이블에 있다면
1분 단위로 같은 값을 빼면 안되잖아용.
1분 단위로 실행 할 때마다 다른 값을 빼야 하는데 다른 값을 빼려면 실행 할 때마다
다른 값을 가지고 오도록 변하는 기준이 있어야 하는데
오라클 Sequence(=Procedure)가 대안이 될 수 있는 것 같습니다.
만든 PROCEDURE 내용 :::
SELECT val1, val2, val3, val4 INTO val1, val2, val3, val4 FROM 인자_테이블 WHERE unique_id = [SEQUENCE_NAME].NEXTVAL AND ROWNUM = 1;
EXEC
PROCEDURE_A (MASTER_NUMBER.NEXTVAL, val1, val2
, val3, val4...);
EXEC
PROCEDURE_B (SYSDATE, val1, val2, val3,
NULL
,
NULL
);
EXEC
PROCEDURE_C (val3);