当前位置: 首页 > article >正文

Oracle怎么写存储过程的定时任务执行语句

declare
    job number;
begin
    DBMS_JOB.SUBMIT(
        JOB => job, 
        WHAT => 'PROC_PHD_DATA_HOURLY;', 
        NEXT_DATE => to_date('2024-12-26 15:00:00', 'YYYY-MM-DD HH24:MI:SS'), 
        INTERVAL => 'SYSDATE + 1/24'
    );
    commit;
end;
/

JOB => job  (JOBID , 可自动生成)

WHAT => 'PROC_PHD_DATA_HOURLY;'  (存储过程名称 注意要加上';')

NEXT_DATE => to_date('2024-12-26 15:00:00', 'YYYY-MM-DD HH24:MI:SS')  (下一个执行时间,也可以理解为第一次执行时间)

INTERVAL => 'SYSDATE + 1/24'  (间隔时间)

上述语句的意思是:

        执行一个定时任务,每隔一个小时执行存储过程-'PROC_PHD_DATA_HOURLY',

        第一次执行时间为2024-12-26 15:00:00

常用的间隔时间公式

Interval => ''TRUNC(SYSDATE + 1)''     -- 每天午夜12点 
Interval => ''TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)''     --每天早上8点30分 
Interval =>  ''NEXT_DAY(TRUNC(SYSDATE ), ''''TUESDAY'''' ) + 12/24''     --每星期二中午12点  
Interval => ''TRUNC(LAST_DAY(SYSDATE ) + 1)''     --每个月第一天的午夜12点
Interval => ''TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), ''Q'' ) -1/24''     --每个季度最后一天的晚上11点 
Interval =>  ''TRUNC(LEAST(NEXT_DAY(SYSDATE, ''''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)''    --每星期六和日早上6点10分
Interval =>  'sysdate+3/(24*60*60)'   --每3秒钟执行一次     
Interval =>  'sysdate+2/(24*60)'   --每2分钟执行一次   
  
1:每分钟执行  
TRUNC(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/24*60*60'  --每30秒  
2:每天定时执行  
Interval => TRUNC(sysdate+1)  --每天凌晨0点执行  
Interval => TRUNC(sysdate+1)+1/24  --每天凌晨1点执行  
Interval => TRUNC(SYSDATE+1)+(8*60+30)/(24*60)  --每天早上8点30分执行  
3:每周定时执行  
Interval => TRUNC(next_day(sysdate,'星期一'))+1/24  --每周一凌晨1点执行  
Interval => TRUNC(next_day(sysdate,1))+2/24  --每周一凌晨2点执行  
4:每月定时执行  
Interval =>TTRUNC(LAST_DAY(SYSDATE)+1)  --每月1日凌晨0点执行  
Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24  --每月1日凌晨1点执行  
5:每季度定时执行  
Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'q')  --每季度的第一天凌晨0点执行  
Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'q') + 1/24  --每季度的第一天凌晨1点执行  
Interval => TRUNC(ADD_MONTHS(SYSDATE+ 2/24,3),'q')-1/24  --每季度的最后一天的晚上11点执行  
6:每半年定时执行  
Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24  --每年7月1日和1月1日凌晨1点  
7:每年定时执行  
Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24  --每年1月1日凌晨1点执行  


http://www.kler.cn/a/454248.html

相关文章:

  • C++ 面向对象编程:继承、继承方式
  • oracle基础:中文字段排序详解
  • 第十六届“蓝桥杯”全国软件和信息技术专业人才大赛简介及资料大全
  • 【Git】—— 使用git操作远程仓库(gitee)
  • LangChain教程 - 表达式语言 (LCEL) -构建智能链
  • apt和apt-get软件包管理工具-debian
  • 骁龙 8 至尊版:AI 手机的变革先锋
  • 青少年编程与数学 02-005 移动Web编程基础 02课题、视口与像素
  • QT--模型/视图
  • 如何使用 Django 框架创建简单的 Web 应用?
  • Android native+html5的混合开发
  • 我的 2024 年终总结
  • 设计模式の命令访问者迭代器模式
  • MIT实验笔记冲刺2 实验部分
  • 工作生活做事慢效率低原因及解决方案
  • C语言变量指针、指针变量、数组指针、指针数组
  • 流程图(二)利用python绘制网络图
  • shardingsphere分库分表项目实践5-自己用java写一个sql解析器+完整项目源码
  • 探秘“香水的 ChatGPT”:AI 开启嗅觉奇幻之旅!
  • 【自留】Unity VR入门
  • [原创](Modern C++)现代C++的第三方库的导入方式: 例如Visual Studio 2022导入GSL 4.1.0
  • python之打印、变量、格式化输出
  • SkyWalking服务监控、追踪、诊断可视化工具
  • Flink的Watermark水位线详解
  • 嵌入式学习-QT-Day09
  • Linux 简单命令总结