巧妙設定job的interval

space6212發表於2019-05-18

今天接到一個需求,需要在每天的晚上8點到第二天早上8點,每個半小時執行一個任務。


由於這個時間設定比較麻煩,最初是打算用crontab來做,但是又懶得寫指令碼了。最後還是使用oracle的方法做出來,效果還不錯。程式碼如下:

方法一、(感謝yangtingkun指導)

var v_job number;
begin
dbms_job.submit(:v_job,'p_delete_mlog;',trunc(sysdate)+20/24,'case when to_number(to_char(sysdate,''hh24''))>=20 or to_number(to_char(sysdate,''hh24''))<=8 then sysdate+1/48 else trunc(sysdate)+20/24 end');
end;

方法二、(ZALBB指點)

var v_job number;
begin
dbms_job.submit(:v_job,'p_delete_mlog;',trunc(sysdate)+20/24,'trunc(sysdate,''MI'')+decode(to_char(sysdate,''HH24''),''08'',1/2,1/48)');

看來只要肯想,oracle還是能做到我們想做的事情的。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63748/,如需轉載,請註明出處,否則將追究法律責任。

相關文章