• Oracle定时存储过程


    --Oracle 定时执行存储过程
    
    
    
    
    
    -- 时间 设定    复制右边函数 
    
    -- 每分钟执行一次    'sysdate+1/1440'
    
    --  每天 1点执行   'TRUNC(sysdate) + 1 +1/ (24)'     如果设定当天2点执行 'TRUNC(sysdate) + 1 +2/(24)'  
    
    --每天午夜12点: 'TRUNC(SYSDATE + 1)'
    
    --每天早上8点30分: 'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'
    
    --每星期二中午12点: 'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'
    
    --每个月第一天的午夜12点: 'TRUNC(LAST_DAY(SYSDATE ) + 1)'
    
    --每个季度最后一天的晚上11点: 'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'
    
    --每星期六和日早上6点10分: 'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)'
    
    --每月25号00:00执行: 'TRUNC(LAST_DAY(SYSDATE ) + 25)'
    
    
    --首先创建执行计划
    
    DECLARE
    plan INTEGER;
    BEGIN
    DBMS_JOB.SUBMIT(plan,'存储过程名称;',sysdate, 时间);
     END;
     
     
     
     --查询 计划编号,执行的存储过程, 设定的执行时间  
     
     select job,what,interval  from user_jobs;
     
     
     
     --执行计划   查询需要计划的计划 运行 run(user_jobs.job)函数
     
    BEGIN
       DBMS_JOB.run(计划编号);
     END;
     
     
     --查询 所有计划的下一次执行时间    加上 where job=计划编号   查询特定计划的下一次执行时间
     select job,next_date,what from dba_jobs 
     
     
     
     --暂停执行计划
     BEGIN
      DBMS_JOB.BROKEN(计划编号,True);
     END;
     
     --移除计划
     
     BEGIN
    DBMS_JOB.REMOVE(计划编号);
     END;
     
     
     
     --修改计划执行时间  先移除计划  重新创建计划  否则会有2个不同时间的计划同时执行
     
     
     
    
    

    博主:码农小胖哥
    出处:felord.cn
    本文版权归原作者所有,不可商用,转载需要声明出处,否则保留追究法律责任的权利。如果文中有什么错误,欢迎指出。以免更多的人被误导。
  • 相关阅读:
    被劣质代码“残害”的这些年
    17 个案例带你 5 分钟搞定 Linux 正则表达式
    nginx配置详解
    探究 Go 语言 defer 语句的三种机制
    git 生成ssh
    关于Laravel 与 Nginx 限流策略防止恶意请求
    保持开源项目健康运行并减少压力的 10 件事
    带着canvas去流浪系列之三 绘制饼图
    无码系列-6 数据缓存设计经验谈
    IoT开发精英实战营招募啦!速来报名!
  • 原文地址:https://www.cnblogs.com/felordcn/p/12142602.html
Copyright © 2020-2023  润新知