首页  ·  知识 ·  数据库
利用JOB定时执行存储过程
网友    Oracle  编辑:dezai   图片来源:网络
利用JOB定时执行存储过程

一、

首先还是得有个存储过程,假如名称是myproc。

二、

建立JOB,在 命令行 下:

 

Sql代码
1.VARIABLE JOB_NO NUMBER;
2.begin
3. dbms_job.submit(:JOB_NO,
4.'myproc;',
5. sysdate,
6.'sysdate+1/1440');
7.commit;
8.end;
VARIABLE JOB_NO NUMBER;
begin
  dbms_job.submit(:JOB_NO,
                  'myproc;',
                  sysdate,
                  'sysdate+1/1440');
commit;
end;
其中JOB_NO是该作业的唯一标识,这里由系统生成。
存储过程名后面要接一个分号。
sysdate+1/1440表示每分钟执行一次。

如果想定在某个时间执行,例如隔N天的M点执行。

则为TRUNC(SYSDATE+N)+M*60/(24*60)。

 

三、

查看数据库中的JOB:

 

Sql代码
1.SELECT * FROM dba_jobs;
SELECT * FROM dba_jobs;
其中what字段表示作业需要执行的存储过程名称。

 

四、

根据JOB ID删除JOB:

 

Sql代码
1.begin
2. dbms_job.remove(jobid);
3.commit;
4.end;
begin
 dbms_job.remove(jobid);
 commit;
end;
必须在命令行下执行。

 

五、

根据JOB ID停止JOB:

 

Sql代码
1.SQL> execute dbms_job.broken(702, true);
2.PL/SQL procedure successfully completed
3.SQL> commit;
4.Commit complete
SQL> execute dbms_job.broken(702, true);
PL/SQL procedure successfully completed
SQL> commit;
Commit complete其中的702就是JOB ID,要commit。必须在命令行下执行。

本文作者:网友 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读