ORACLE JOB

来源:这里教程网 时间:2026-03-03 12:12:17 作者:

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

相关推荐