Oracle中如何定时调用存储过程
创建测试表
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'); /*执行周期*/