定义一个job在指定的时间去执行指定的存储过程:
范例实现代码:
declare
job number;
begin
dbms_job.submit(job, 'auto_test_pro;', sysdate, 'TRUNC(SYSDATE + 1)');
end;
参数解释:
auto_test_pro 这里写的是你要指定执行的存储过程。
sysdate 这里要设置的时间是接下来要开始执行的时间。
trunc(sysdate+1) 这里要设置的是每次执行间隔
关于job操作的延伸:
- 删除job
dbms_job.remove(job)
- 修改要定时执行的操作
dbms_job.what(job,what);
- 修改下次执行的时间
dbms_job.next_date(job,next_date);
- 修改间隔时间
dbms_job.interval(job,interval);
关于job常用时间设置的延伸
- 每分钟定时执行 :TRUNC(sysdate,'mi')+1/(24*60)
- 每天凌晨1点定时执行 :TRUNC(sysdate)+1+1/(24)
- 每天零点定时执行 :TRUNC(sysdate)+1
- 每天早上8点半 :TRUNC(sysdate+1)+(8*60+30)/(24*60)
- 每天中午12点 :TRUNC(sysdate)+12/24
- 每个星期二的中午12点 :NEXT_DAY(TRUNC(sysdate),"TUESDAY")+12/24
- 每个季度定时执行 :TRUNC(ADD_MONTHS(sysdate,3),'Q')+1/24
- 每半年定时执行 :ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24
- 每年定时执行 :ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24