在oralce中实现定期执行任务

来源:互联网 发布:网络语梗是什么意思 编辑:程序博客网 时间:2024/04/29 06:12

首先确定需要执行的任务

以下存储过程:
create procedure fdgetmessage
is
begin
insert into fdmessagesend  select username,fdcontent.contentinfor,fdcolm.sendernum,'0' from fduser_colm,
fdcolm,fdcontent where fduser_colm.colmid=fdcolm.colmid and fdcontent.colmid=fdcolm.colmid and tag='1' and
 fdcontent.sendtime>sysdate-1 and fdcontent.sendtime<sysdate;
commit;
exception
when others then
rollback;
end;

作用是提取当天需要处理的数据到另一个表中

然后定义一个job

variable n number;
begin
dbms_job.submit(:n,
'fdgetmessage;',
sysdate,
'TRUNC(SYSDATE + 1)'); 
commit;
end;
/
print n;       //n是这个job的编号

这个job作用是每天00:00 后执行一次fdgetmessage存储过程


如果想要立即执行可以用
begin
dbms_job.run(job编号);
commit;
end;
/
修改任务

execute dbms_job.change(job编号,'fdgetmessage;',SYSDATE,'TRUNC(SYSDATE + 1)+(1*60)/(24*60)');

每天早上一点执行

察看作业情况
select job,LAST_DATE,LAST_SEC,next_date,next_sec,failures,broken from user_jobs;

移除任务
begin
dbms_job.remove(job编号);
commit;
end;
/

 

原创粉丝点击