zoukankan      html  css  js  c++  java
  • Oracle定时执行存储过程(转)

    定时执行存储过程在平时开发中经常会用到,年前的时候自己也做了一个,由于时间关系一直没能记录,现记录下来。 
       
       首先用一个完整的例子来实现定时执行存储过程。 

    任务目标:每小时向test表中插入一条数据 

    实现方案: 
        1.通过 oracle 中 dbms_job 完成存储过程的定时调用 
        2.在存储过程中完成相应的逻辑操作 

    实现步骤: 
      1.创建一个测试表 
    create table test(dTime date); 
      
      2.创建一个存储过程 
    create or replace procedure p_test as 
    begin 
    insert into test values(sysdate); 
    end; 

      3.创建执行计划:每小时运行一次存储过程 
    Declare 
      i Integer; 
    Begin 
       dbms_job.submit(i,'p_test;',Sysdate,'sysdate+1/24'); 
    end; 

      4.运行执行计划 
    Declare 
      jobno Integer; 
    Begin 
    -- 查找计划号 
    Select t.JOB into jobno From User_Jobs t ; 
    -- 运行制定的执行计划 
    dbms_job.run(jobno); 
    end; 

      5.查看任务队列情况 
    select job,next_date,next_sec,failures,broken from user_jobs; 

      6.查看任务执行情况 
    select to_char(dTime ,'yyyy/mm/dd hh24:mi:ss') from test order By dTime; 

      7.停止执行计划 
    Declare 
      jobno Integer; 
    Begin 
      -- 查找计划号 
      Select t.JOB into jobno From User_Jobs t ; 
      -- 停止计划,不再继续执行 
      --dbms_job.broken(jobno,True); 
      -- 停止计划,并在两分钟后继续执行 
      dbms_job.broken(jobno,True,Sysdate+(2/24/60)); 
    end; 

      8.删除执行计划 
    Declare 
      jobno Integer; 
    Begin 
      -- 查找计划号 
      Select t.JOB into jobno From User_Jobs t ; 
      dbms_job.remove(jobno); 
    end; 

      9.修改执行计划 
    Declare 
      jobno Integer; 
    Begin 
      -- 查找计划号 
      Select t.JOB into jobno From User_Jobs t ; 
      -- 修改为:每分钟执行一次 
      dbms_job.interval(jobno, 'sysdate+1/(24*60)'); 
    end; 

    参数说明: 
    DBMS_JOB.SUBMIT(jobno =>jobID,//对应的唯一id(jobID <-> jobName)唯一映射 
                   procedureName=> 'your_procedure;',  //调用的存储过程名称 
                     next_date => sysdate,   //下次执行的时间(第一次执行的时间) 
                     interval => 'sysdate+1/1440');  //每次执行间隔的时间 

    以上就是定时执行存储过程的全部内容,留待后用吧。

    http://lafecat.iteye.com/blog/2186568

  • 相关阅读:
    Codeforces 877 C. Slava and tanks
    Codeforces 877 D. Olya and Energy Drinks
    2017 10.25 NOIP模拟赛
    2017 国庆湖南 Day1
    UVA 12113 Overlapping Squares
    学大伟业 国庆Day2
    51nod 1629 B君的圆锥
    51nod 1381 硬币游戏
    [JSOI2010]满汉全席
    学大伟业 2017 国庆 Day1
  • 原文地址:https://www.cnblogs.com/softidea/p/4303175.html
Copyright © 2011-2022 走看看