BEGIN
SYS.DBMS_JOB.SUBMIT(
job => :job,
what => 'check_err;', -- 要執行的預存程序
next_date => TRUNC(SYSDATE) + 23/24, -- 今天 23:00 (23/24 天)
interval => 'TRUNC(NEXT_DAY(SYSDATE,''FRIDAY'')) + 23/24' -- 每週五 23:00
);
COMMIT;
END;
job:輸出參數,系統自動分配編號。what:執行內容 (預存程序/匿名區塊)。next_date:下次執行時間點。interval:重複間隔運算式,**必須回傳 DATE 型別**,每次執行後重新計算下次時間。Oracle 日期單位為「天」:
1/24 = 1 小時1/1440 = 1 分鐘 (24×60)1/86400 = 1 秒 (24×60×60)TRUNC(SYSDATE) 取當天 00:00,加 23/24 即 23:00。
NEXT_DAY(SYSDATE, 'FRIDAY') 取下個週五日期,TRUNC 歸零時間,再加 23/24。