当前位置:   article > 正文

PLSQL定时任务入门_plsql设置job每天11点执行

plsql设置job每天11点执行
1.定时任务
1.1语法

语法:

declare 
 job_test number;
 begin dbms_job.submit( 
   job_test, --定时器ID,系统自动获得 
   'p_json2;',  --what执行的存储过程名 
    sysdate, --next_date,定时器开始执行的时间,这里表示立即执行 
   'sysdate + 1/1440' --interval,每隔1分钟执行一次 
 );
 commit;  
 end;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
job参数是输出参数,由submit()过程返回的binary_integer这个值用来唯一标识一个工作。一般定义一个变量接收,可以去user_jobs试图查询job值。
what参数是将被执行的PL/SQL代码块,存储过程名称等。
next_date参数指何时将运行这个工作。
interval参数指何时这个工作将被重新执行。
no_parse参数指此工作在提交时或执行时是否应进行语法分析;true,默认值false。指此PL/SQL代码在他第一次执行时应进行语法分析,而false指本PL/代码应立即进行语法分析。
  • 1
  • 2
  • 3
  • 4
1.2 查询系统中的job,可以查询视图
#相关视图
select * from user_jobs;--#查看调度任务
select * from dba_jobs_running;--#查看正在执行的调度任务
select * from dba_jobs;--#查看执行完的调度任务
select * from all_jobs;
  • 1
  • 2
  • 3
  • 4

其中job字段就是我们操作的job的id号,what即操作的存储过程的名称,next_date是执行的时间,interval是执行间隔。
在这里插入图片描述

1.3删除job
begin
  dbms_job.remove(查询到的job的id);
  commit;
end;
  • 1
  • 2
  • 3
declare
job_no number ;
begin
select job into job_no from user_jobs where what='TEST1();'--通过存储过程的字段信息来进行查找job的ID标识
DBMS_JOB.remove(job_no);
end;
  • 1
  • 2
  • 3
  • 4
  • 5
1.4手动调用job
begin
  dbms_job.run(查询到的job的id);
end;
  • 1
  • 2
1.5停止job
dbms.broken(job,broken,nextdate);   
dbms_job.broken(v_job,true,next_date);        /*停止一个job,里面参数true也可是false,next_date(某一时刻停止)也可是sysdate(立刻停止)。   */
  • 1
1.6修改间隔时间
dbms_job.interval(job,interval);
    1.7修改下次执行时间
    dbms_job.next_date(job,next_date);
      2.其他
      2.1interval参数常用值示例
      名称用法
      每天午夜12:00“TRUNC(SYSDATE+1)”
      每天早上8:30“TRUNC(SYSDATE+1)+(860+30)/(2460)”
      每星期二中午12:00“NEXT_DAY(TRUNC(SYSDATE),“TUESDAY”)+12/24”
      每个月第一天的午夜12:00“TRUNC(LAST_DAY(SYSDATE)+1)”
      每个季度最后一天的晚上11:00“TRUNC(ADD_MONTHS(SYSDATE+2/24,3),“Q”)-1/24”
      每星期六和日早上6:10“TRUNC(LEAST(NEXT_DAY(SYSDATE,“SATURDAY”),NEXT_DAY(SYSDATE,“SUNDAY”)))+(660+10)/(2460)”
      每3秒钟执行一次‘sysdate+3/(246060)‘
      每2分钟执行一次’sysdate+2/(24*60)‘
      2.2每分钟执行
      名称用法
      IntervalTRUNC(sysdate,’mi’) + 1/ (24*60) –每分钟执行
      Interval‘sysdate+1/(24*60)’ –每分钟执行
      Interval‘sysdate+1’ –每天
      Interval‘sysdate+1/24’ –每小时
      Interval‘sysdate+2/24*60’ –每2分钟
      Interval‘sysdate+30/246060’ –每30秒
      2.3每天定时执行
      名称用法
      intervalTRUNC(sysdate+1) --每天凌晨0点执行
      intervalTRUNC(sysdate+1)+1/24 --每天凌晨1点执行
      intervalTRUNC(sysdate+1)+(860+30)/(2460) --每天早上8:30点执行
      2.4每周定时执行
      名称用法
      intervalTRUNC(next_day(sysdate,‘星期一’))+1/24 --每周一凌晨1点执行
      intervalTRUNC(next_Day(sysdate,1))+2/24 --每周一凌晨2点执行
      2.5每月定时执行
      名称用法
      intervalTRUNC(LAST_DAY(SYSDATE)+1) --每月1日凌晨0点执行
      intervalTRUNC(LAST_DAY(SYSDATE)+1+1/24) --每月1日凌晨1点执行
      2.6每季度定时执行
      名称用法
      intervalTRUNX(ADD_MONTHS(SYSDATE,3),‘q’) --每季度的第一天凌晨0点执行
      intervalTRUNX(ADD_MONTHS(SYSDATE,3),‘q’)+1/24 --每季度的第一天凌晨1点执行
      intervalTRUNX(ADD_MONTHS(SYSDATE+2/24,3),‘q’)-1/24 --每季度的最后一天的晚上11点执行
      2.7每半年定时执行
      名称用法
      intervalADD_MONTHS(TRUNC(SYSDATE,‘yyyy’),6)+1/24 --每年7月1日和1月1日凌晨1点
      2.8每年定时执行
      名称用法
      intervalADD_MONTHS(TRUNC(SYSDATE,‘yyyy’),12)+1/24 --每年1月1日凌晨1点执行
      声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/203631
      推荐阅读
      相关标签
        

      闽ICP备14008679号