ITPub博客

首页 > 数据库 > Oracle > ORACLE JOB

ORACLE JOB

原创 Oracle 作者:Taiaishua 时间:2018-10-29 20:17:54 0 删除 编辑

ORACLE JOB:

JOB的作用:

在项目中,经常会遇到需要定时完成的任务,比如定时更新数据,定时统计数据生成报表等等,这些工作都可以使用Oracle的Job来完成。

提交JOB的方法:

DBMS_JOB.SUBMIT(  

      jobid       OUT    BINARY_INTEGER, 

      what      IN     VARCHAR2,  

      NEXT_DATE IN     DATE DEFAULT SYSDATE,  

      interval  IN     VARCHAR2 DEFAULT 'NULL'

  )

1.第1个参数jobid:JOB的ID,此处只能放类型为number的变量,这个值用来唯一标识一个工作。当提交任务后,系统会返回一个JOB的ID,会写到此参数变量中。用来唯一地标示一个任务。该参数既可由用户指定也可由系统自动赋予。


2.第2个参数what:是一个是将被执行的PL/SQL代码块,或者是存储过程名,如果是存储过程名,则要在后面添加“;”号。


3.第3个参数next_date:指定何时将运行这个工作。一个时间类型变量而不是一个字符串,所以需要注意不要把它当成字符串,不需要对该参数加引号。用来调度任务队列中该任务下一次运行的时间。


4.第4个参数interval,也就是最后一个参数interval是一个字符串类型,注意添加引号。next_date是建立这个job时希望第一次运行的时间,interval是next_date之后下一次运行的时间,当第一次运行后,next_date的值就是interval的值了,interval的值又代表这次next_date时间之后下一次的运行时间。


例:设置每十秒进行一次myproc存储过程

declare

 jobid int;

 begin

   dbms_job.submit(jobid,'myproc;',sysdate,'sysdate+(10)/(24*60*60)');

   dbms_output.put_line(jobid);

  end;

这里输出的41是系统给这个job的进程号或者称为任务编号


停止job:

 begin

   dbms_job.remove(41);

  end;

这里函数dbms_job.remove()括号里面的参数是进程号,就是上一个例子里面说的jobid,这里的jobid一定

要是已经存在的,否则会报错。


修改job:


SQL> exec dbms_job.change(42,'update emp set sal=sal+10 where ename=''SCOTT'';',NULL,NULL);

需要在sql命令窗口中执行,参数和submit的参数一样。


一些描述时间的语言:trunc()是截断,比如trunc('123 456')=123

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537584/viewspace-2217981/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: orecle分析函数
下一篇: ORACLE数据库备份
请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    55
  • 访问量
    51691