1.创建表a(用于定时任务存储数据)
create table a(a date);
2.编写一个执行函数test(用于定时任务定时调用)
create or replace procedure test as --(函数名称,可带参数)
begin
insert into a values(sysdate); --(这里可以写复杂sql)
end;
3.创建一个定时任务模板(现在就可以定时执行插入数据的定时任务了)
declare
job1 number;
begin
dbms_job.submit(job1,
what => 'test;',--(执行函数名称)
next_date => sysdate,
interval => 'sysdate+1/(24*60*60)'); -- (每隔1s处理一次用户表)
commit;
end;
注:Interval => TRUNC(sysdate+1) --每天凌晨0点执行
Interval => TRUNC(sysdate+1)+1/24 --每天凌晨1点执行
Interval => TRUNC(next_day(sysdate,
'星期一'
))+1/24
--每月1日凌晨1点执行
Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24--每季度的第一天凌晨1点执行
Interval => ADD_MONTHS(trunc(sysdate,
'yyyy'
),6)+1/24
--每年7月1日和1月1日凌晨1点
4.查询定时任务详情
select job,broken,what,interval,t.* from user_jobs t;
select
job, next_date, next_sec, failures, broken
from
user_jobs;--下次执行时间
5.启用定时任务
begin
dbms_job.run(25); --(job的id)
commit;
end;
5.删除定时任务
begin
dbms_job.remove('24');
commit;
end;