답변감사합니다.
제가 하고자 하는 것은
DB에 입력된 시간을 읽어서 매일읽어서
어떤 작업을 수행하도록 하는 것입니다.
그러니까..
읽는 시간은 동일하나.. 읽은 시간에 취해야 액션의 시간은 항상
바뀌는 형태입니다.
은행작업에 있어서.. 자금화 연장이라는 것이 걸리면..
시간뒤에 액션을 취해야 하는 일이라서 그렇습니다..
어떻게 처리를 해야할지...
어떤 이비슷한 예라도 있으시면.. 부탁드립니다.
감사합니다.
>>firebird 님께서 쓰시길<<
:: DBMS_JOB 패키지 사용시 INTERVAL 파라미터는 해당 JOB이 실행되면서 다음 실행될
:: 시점을 계산하기 위해서 평가됩니다. 따라서 임의의 시점에서 계산되어도 동일한
:: 결과를 낼 수 있는 Expression을 지정해야만 합니다.
:: 즉, 님이 생각하시는 것처럼 SUBMIT 시에 평가되는 것이 아니라는 것입니다. 따라서
:: 매개변수 전달은 불가능합니다.
::
:: 일단 올려주신 샘플만 가지고는 정확히 뭘 하실려는 것인지 알수가 없군요.
:: 매번 SUBMIT을 할 때마다 새로운 JOB이 생성되기 때문에 님과 같은 방식으로 코딩하
:: 는 경우 계속 새로운 JOB을 등록하게 될 겁니다.
:: 원하시는게 그것인지요?
::
:: 만약 시간주기를 변경하기를 원하신다면 DBMS_JOB.INTERVAL() 프로시져를 쓰실 수 있을
:: 것이고 실행할 프로시져를 변경하기를 원하신다면 DBMS_JOB.WHAT() 프로시져를 쓸 수
:: 있습니다. 또한 해당 프로시져의 작동을 중단하시기를 원한다면 BROKEN() 프로시져를
:: 쓰실 수 있겠지요.
::
:: 일단은 어떤 목적으로 쓰시려고 하는지 모르겠네요. 얼핏 생각에는 특정 시점에 한번
:: 만 수행할 프로시져 같기도 한데 그렇다면 JOB은 그다지 적합하지는 않습니다.
:: 실행하고 나서 자기 자신을 BROKEN() 시켜줄 필요가 있겠지요.
::
:: >>류광섭 님께서 쓰시길<<
::
:: :: 오라클 테이블
:: :: create table temp_table (
:: :: NUM_COL NUMBER(10),
:: :: CHAR_COL CHAR(30)
:: :: );
:: :: create table test_yymmdd(
:: :: HHMI CHAR(12)
:: :: );
:: ::
:: :: CREATE OR REPLACE PROCEDURE Temp
:: :: AS
:: :: v_hour number(2);
:: :: v_min number(2);
:: :: v_jobNum number(3);
:: ::
:: :: begin
:: :: select substr(hhmi, 9, 2) into v_hour from test_yymmdd;
:: :: select substr(hhmi, 11, 2) into v_min from test_yymmdd;
:: :: insert into temp_table(num_col, char_col) values (temp_seq.nextval, TO_CHAR(sysdate, 'yyyy-mm
:: -dd
:: :: hh24:mi:ss'));
:: :: commit;
:: :: end Temp;
:: ::
:: ::
:: :: BEGIN
:: :: DBMS_JOB.SUBMIT(:v_jobNum, 'Temp;', SYSDATE, 'sysdate+( :v_hour/24)');
:: :: END;
:: ::
:: :: 위와 같이 실행했을때
:: :: DB 에서 뽑아온 시간으로 실행을 하고 싶은데..
:: :: 잘 되지 않습니다.
:: :: 현재 변수 넘겨주는게 제대로 되질 않아서.. 그런것 같은데..
:: ::
:: :: :v_hour 부분을 숫자로 대치하면 잘 작동합니다.
:: ::
:: :: 도움을 부탁드리겠습니다.
:: :: 감사합니다.
:: :: 그럼.
:: ::
:: ::
|