我有一个Oracle作业定义如下:
BEGIN
DBMS_SCHEDULER.CREATE_JOB(
JOB_NAME => 'DBMS_JOB_RESYNC_REQUESTS',
JOB_TYPE => 'PLSQL_BLOCK',
JOB_ACTION => '
BEGIN
-- iterate over implicit cursor
FOR K IN (SELECT SCEN_ID
from TABLE1
WHERE STATUS = 2)
LOOP
-- updating status and date
UPDATE TABLE1
SET STATUS = 3, LAST_UPDATED_DATE = SYSDATE
WHERE SCEN_ID= K.SCEN_ID;
END LOOP;
COMMIT;
END;',
START_DATE => systimestamp,
REPEAT_INTERVAL => 'FREQ=MINUTELY;INTERVAL=1;BYSECOND=0;',
END_DATE => NULL,
ENABLED => TRUE,
COMMENTS => 'TESTING JOB');
END;
我有一个不断被外部应用程序更新的表STATUS列从1到2的值,我想创建一个更改STATUS的作业从2到3,并添加更改的日期。
我不知道为什么我的作业只运行一次,因为我指定了每分钟运行一次。
我做错了什么吗?
您的代码中有一个无限循环。你测试过代码吗?
试试这个
BEGIN
UPDATE TABLE1
SET STATUS = 3,
LAST_UPDATED_DATE = SYSDATE
WHERE STATUS = 2;
COMMIT;
END;