定制JOB的下次执行时间的关键是利用trunc()函数,使计算时间基于一个确定的时间点。
举几个简单的例子:
1.每个小时整点执行的例子:
declare
:`"pN"x"@0 v_jobno number;ITPUB个人空间;|;S:i Y5maYw#y
begin
1vt;d-?$CG
R*|A;n0 dbms_job.submit(v_jobno, 'null;', trunc(sysdate, 'HH24'), 'trunc(sysdate, ''HH24'') + 1/24');
R
E/Y,R_J9}"}m*_M0 commit;
J`;[SN8h0end;
j'h+I\7k0/
2.每个小时半点执行的例子:
declareITPUB个人空间3\CA;tC"?o&W}
v_jobno number;
oY9Po2kT^c5\0beginITPUB个人空间]E&u0?m6Q
dbms_job.submit(v_jobno, 'null;', trunc(sysdate, 'HH24') + 3/48, 'trunc(sysdate, ''HH24'') + 3/48');ITPUB个人空间p)Z(TIeMf5}
commit;ITPUB个人空间*e&v2y.|+l\![@c
end;ITPUB个人空间h!U}T`Yx
/
3.每半个小时执行一次的例子:
declare
J!`F*mQ!x&C0 v_jobno number;
'j}.t~5NAKj0beginITPUB个人空间
ik0M!^E s)?M
dbms_job.submit(v_jobno, 'null;', trunc(sysdate, 'HH24') + FLOOR(TO_NUMBER(TO_CHAR(sysdate, 'MI'))/30)/48, ITPUB个人空间3V8ajX5a^ jY(PE
'trunc(sysdate, ''HH24'') + FLOOR(TO_NUMBER(TO_CHAR(sysdate, ''MI''))/30)/48 + 1/48');
+|;s~,j NB0 commit;ITPUB个人空间;|#U5z^b ^(u-V%y,m
end;ITPUB个人空间}.B@?4e$wAo
S*ha
/
或者
declare
!v"slg"t
bQ|8U}0 v_jobno number;ITPUB个人空间;V.`)Z$d3{'Bh7}
begin
~n(OKo9Y
e0 dbms_job.submit(v_jobno, 'null;', ITPUB个人空间Jk.U%e7K
trunc(sysdate, 'HH24') + (trunc(sysdate + 1/48, 'HH24') - trunc(sysdate , 'HH24'))/2, ITPUB个人空间n9[,w3i5s
'trunc(sysdate, ''HH24'') + (trunc(sysdate + 1/48, ''HH24'') - trunc(sysdate , ''HH24''))/2 + 1/48');ITPUB个人空间4YM)WY}d Dvq
commit;
HR[,])t:rc}
rf0end;ITPUB个人空间b*TE
@CcYp
/
4.每周一早上10点执行
declareITPUB个人空间9@ Zv9D x.bI!QJ
v_jobno number;
5k0zk
N3U0beginITPUB个人空间["PkBX6^6c
dbms_job.submit(v_jobno, 'null;',
P"U0t-|x"tO&H"c0 trunc(sysdate, 'd') + 8 + 10/24, 'trunc(sysdate, ''d'') + 8 + 10/24');ITPUB个人空间 FgQQuA ?c
commit;ITPUB个人空间 fw~wXIO
end;
"MJ{
ek3U?0/
RS|&}6IfmZ0