zoukankan      html  css  js  c++  java
  • oracle 定时运行存储过程的实现

    是基于PL/SQL 可视化工具的实现;
     
    首先,先编写一个存储过程
     
    点击procedure,右键新建,填写一个你编写的存储过程的名字;
     
    如果是对正常的表进行操作,那么直接在begin和end之间写sql脚本就可以了;
     
    但是我写的是临时表,在Oracle存储过程中,是不允许使用DDL语句的,比如create,alter,drop,translate;
     
    所以只能使用动态sql语句,具体语法是:
     
    create or replace procedure pro as
         str_sql  varchar(400)   
         --用来存储sql
    begin
         
         str_sql='这里写脚本';
         --此处可以放置DDL语句
         execute immediate str_sql;
    end;
     
    值得注意的是,在str_sql中,当遇到sql中经常使用的单引号时,解释器会认为出了问题;
    需要使用2个单引号‘’来代替单引号‘;
     
    写完存储过程之后就是写定时任务了:
    右键DBMS_Jobs 新建
     
    在what中填入存储过程的名字;
    填写你希望的存储过程下一个执行的日期;
    填入时间间隔:TRUNC(LAST_DAY(SYSDATE))+5+2/24;这句话的意思是每个月的5号的凌晨两点;
     
    例子如下:
    1、每分钟执行
    Interval => TRUNC(sysdate, 'mi')+1/(24*60)
    2、每天定时执行
    例如:每天的凌晨2点执行
    Interval => TRUNC(sysdate)+1+2/(24)
    3、每周定时执行
    例如:每周一凌晨2点执行
    Interval => TRUNC(next_day(sysdate, 2))+2/24 --星期一,一周的第二天
    4、每月定时执行
    例如:每月1日凌晨2点执行
    Interval => TRUNC(LAST_DAY(SYSDATE))+1+2/24
    5、每季度定时执行
    例如每季度的第一天凌晨2点执行
    Interval => TRUNC(ADD_MONTH(SYSDATE), 3),'Q')+2/24
    6、每半年定时执行
    例如:每年7月1日和1月1日凌晨2点
    Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24
    7、每年定时执行
    例如:每年1月1日凌晨2点执行
    Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),12)+2/24
     
    再点击应用即可。
     
     
  • 相关阅读:
    Using CocoaPods
    IMPROVING IOS UNIT TESTS WITH OCMOCK
    梦想不为斗室所缚
    【转】class 'org.springframework.orm.hibernate3.LocalSessionFactoryBean' not found解决办法
    我们去工作是为了什么?——迈锡尼
    查看已保存的wifi密码
    点球成金
    研究生开口月薪一万 企业暗示“靠边站”
    程序员技术练级攻略
    Emacs是一种信仰!世界最强编辑器介绍 (转自王珢)
  • 原文地址:https://www.cnblogs.com/zuopy/p/7778895.html
Copyright © 2011-2022 走看看