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

  • 相关阅读:
    IEnumerable和IQueryable的区别
    最全的ASP.NET MVC路由配置,以后RouteConfig再弄不懂去吃翔
    JSON遍历方法
    将Sublime Text 2搭建成一个好用的IDE
    Linux入门教程
    apache如何配置默认的根目录
    Web移动端Fixed布局的解决方案
    node-创建模块
    关于文字内容溢出用点点点(…)省略号表示
    JavaScript设计模式与开发实践 | this、call和apply
  • 原文地址:https://www.cnblogs.com/softidea/p/4303175.html
Copyright © 2011-2022 走看看