如何实现oracle在月底自动运行指定的存储过程?

解决方案 »

  1.   

    用 job每天调用 如果是最后一天 则执行此存储过程 
      

  2.   

    建立作业:Variable job1 Number;
    begin
      sys.dbms_job.submit(job => :job1,
                          what => '你的存储过程名称;',
                          next_date => to_date('18-10-2007 14:00:00', 'dd-mm-yyyy hh24:mi:ss'),--执行时间
                          interval => 'sysdate+1');--隔多少天执行一次
      commit;
    end;
    /
      

  3.   

    用   job每天调用   如果是最后一天   则执行此存储过程   ,如何知道每个月的最后一天啊
      

  4.   

    我这个存储过程,只想在oracle 中每个月的最后一天执行?请问job该如何写?
      

  5.   

    SELECT to_char(LAST_DAY(SYSDATE),'yyyy-mm-dd') FROM dual  
    得到最后一天
      

  6.   

    Variable   job1   Number; 
    begin 
        sys.dbms_job.submit(job   =>   :job1, 
                                                what   =>   '你的存储过程名称; ', 
                                                next_date   =>   to_date( '2007-11-31 00:00:00',   'YYYY-MM-DD HH24:MI:SS'),--执行时间 
                                                interval   =>   'sysdate + (TO_DATE( TO_CHAR(SYSDATE + 33,'YYYY-MM')' 
                                                                            ||'01 00:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE ) - 1
                                                             );--隔多少天执行一次 
        commit; 
    end; 
    /
    原理:设置本月最后一天执行,执行间隔为: 执行日(本月最后一天) + (下下个月的1号 - 本月最后一天) - 1天 = 下月最后一天
      

  7.   

     每个月月末执行
    variable   job1   number;
    begin   
      sys.dbms_job.submit(:job1,'MYPROC1;',to_date('31-01-2007 04:42:00', 'dd-mm-yyyy hh24:mi:ss'), 'TRUNC(LAST_DAY(SYSDATE+1)) +(20*60)/(24*60)');  commit;   
    end;