Oracle中如何定时调用存储过程

2014-11-24 17:48:24 · 作者: · 浏览: 0

创建测试表
SQL> create table a(a date);


表已创建。


创建一个自定义过程
SQL> create or replace procedure test as
2 begin
3 insert into a values(sysdate);
4 end;
5 /


过程已创建。


创建JOB
SQL> variable job1 number;
SQL>
SQL> begin
2 dbms_job.submit(:job1, 'test; ',sysdate, 'sysdate+1/1440 ');  --每天1440分钟,即一分钟运行test过程一次
3 end;
4 /


PL/SQL 过程已成功完成。


运行JOB
SQL> begin
2 dbms_job.run(:job1);
3 end;
4 /


PL/SQL 过程已成功完成。


SQL> select to_char(a, 'yyyy/mm/dd hh24:mi:ss ') 时间 from a;


删除JOB
SQL> begin
2 dbms_job.remove(:job1);
3 end;
4 /


PL/SQL 过程已成功完成。


补充说明:DBMS_JOB.SUBMIT用法


DBMS_JOB.SUBMIT(
JOB => :JOB, /*自动生成JOB_ID*/
WHAT => 'CREATE_TASK_BY_PLAN;', /*需要执行的过程或SQL语句*/
NEXT_DATE => TRUNC(SYSDATE+1)+6/24, /*初次执行时间*/
INTERVAL => 'TRUNC(SYSDATE+1)+6/24'); /*执行周期*/