zoukankan      html  css  js  c++  java
  • oracle 任务定时执行

    在oracle可以像sql server那样建立定时任务.

    下面我使用oracle sql创建一个定时任务.

    1.创建一个简单的表.

    create table testdate

    (

      name varchar2(20),

      createdate date

    )

    2.创建一个存储过程.

    create procedure Proc_addTestdate
    as
    begin
         insert into testdate values('abc',SYSDATE);
    end;

    3.创建任务

    DECLARE
           X NUMBER;
    BEGIN
       SYS.DBMS_JOB.SUBMIT
       (
        job        => X

      --执行存储过程名称
       ,what       => 'Proc_addTestdate;'
       ,next_date  => to_date('09-12-2008 00:00:00','dd/mm/yyyy hh24:mi:ss')
       ,interval   => 'TRUNC(SYSDATE+1)'
       );
    END;

    其中:
    ●job:输出变量,是此任务在任务队列中的编号;
    ●what:执行的任务的名称及其输入参数;
    ●next_date:任务执行的时间;
    ●interval:任务执行的时间间隔。

    时间间隔
    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

    4.执行任务

    begin
           SYS.DBMS_JOB.RUN(1);
    end;

    5.删除任务

    begin

      --任务序号
         sys.DBMS_JOB.REMOVE(2);
    end;

  • 相关阅读:
    Crawling Computing Ranking 很长时间, 怎么办?
    明月外,净红尘
    数据库人员面试:SQL Server常用测试题
    华山人物志——苏颖超
    安全性和 XML Web services
    聚簇索引与非聚簇索引的区别以及SQL Server查询优化技术
    SQL2000里的数据类型
    [精华] 数据库的查询优化技术
    深入浅出理解索引结构
    XSL
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/1351164.html
Copyright © 2011-2022 走看看