Oracle定时器

来源:互联网 发布:并行计算结构算法编程 编辑:程序博客网 时间:2024/06/05 17:49
DECLARE  jobno NUMBER; BEGIN  dbms_job.submit(job       => jobno, --'定时器id'                  what      => 'auto_count;',--'需要执行的函数'                  next_date => SYSDATE,--'定时器开始时间'                  INTERVAL  => 'TRUNC(sysdate) + 1 +2 / (24)');--'定时器运行周期'  COMMIT;END;CREATE OR REPLACE PROCEDURE auto_countIS   temp            CHAR (2);   rs              SYS_REFCURSOR;      no              NVARCHAR2 (20);   reserved       VARCHAR2 (200);BEGIN   SELECT Flag     INTO temp     FROM Property WHERE Type <> '82';   IF temp = 'Y'   THEN      BEGIN         OPEN rs FOR            SELECT no,b.reserved FROM ASSET a;         LOOP            FETCH rs               INTO no,reserved;            EXIT WHEN rs%NOTFOUND;--'这里开始循环游标'            --'先执行修改  这里可以同时运行多个EXECUTE IMMEDIATE'            EXECUTE IMMEDIATE               'update Check set FLAG=:1 where NO=:2'               USING 'F', no;                        EXECUTE IMMEDIATE               'update ASSET set SEGMENT=:1 where NO=:2'               USING 'F', no;         END LOOP;      END;   END IF;END;
  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_MONTHS(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

0 0