首页 » Oracle » Oracle定时执行存储过程

Oracle定时执行存储过程

原文 http://blog.csdn.net/qq_32340877/article/details/79232126

2018-02-02 02:01:36阅读(377)

首先用一个完整的例子来实现定时执行存储过程

任务目标:每小时向test表中插入一条数据

实现方案:
1.通过 Oracle 中 dbms_job 完成存储过程的定时调用
2.在存储过程中完成相应的逻辑操作

实现步骤:
1.创建一个测试表

create table test(dTime date); 

2.创建一个存储过程

create or replace procedure p_test as 
begin 
insert into test values(sysdate); 
end; 

3.创建执行计划:每小时运行一次存储过程

Declare 
  i Integer; 
Begin 
   dbms_job.submit(i,'p_test;',Sysdate,'sysdate+1/24'); 
end; 

4.运行执行计划

Declare 
  jobno Integer; 
Begin 

– 查找计划号

Select t.JOB into jobno From User_Jobs t ; 

– 运行制定的执行计划

dbms_job.run(jobno); 
end; 

5.查看任务队列情况

select job,next_date,next_sec,failures,broken from user_jobs; 

6.查看任务执行情况

select to_char(dTime ,'yyyy/mm/dd hh24:mi:ss') from test order By dTime; 

7.停止执行计划

Declare 
  jobno Integer; 
Begin 

– 查找计划号

Select t.JOB into jobno From User_Jobs t ;
– 停止计划,不再继续执行
–dbms_job.broken(jobno,True);
– 停止计划,并在两分钟后继续执行
dbms_job.broken(jobno,True,Sysdate+(2/24/60));
end;

8.删除执行计划

Declare
jobno Integer;
Begin

– 查找计划号

Select t.JOB into jobno From User_Jobs t ;
dbms_job.remove(jobno);
end;

9.修改执行计划

Declare
jobno Integer;
Begin
– 查找计划号
Select t.JOB into jobno From User_Jobs t ;
– 修改为:每分钟执行一次
dbms_job.interval(jobno, ‘sysdate+1/(24*60)’);
end;

参数说明:

DBMS_JOB.SUBMIT(jobno =>jobID,//对应的唯一id(jobID <-> jobName)唯一映射 
               procedureName=> 'your_procedure;',  //调用的存储过程名称 
                 next_date => sysdate,   //下次执行的时间(第一次执行的时间) 
                 interval => 'sysdate+1/1440');  //每次执行间隔的时间 

以上就是定时执行存储过程的全部内容,留待后用吧。

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹