为什么这个DBMS_SCHEDULER任务只执行一次?



我有一个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;

最新更新