ORACLE 定時執行預存程序

來源:互聯網
上載者:User

**

推薦用dbms_scheduler方式更好 (2012-11-19注)

/* 查詢:select job,broken,what,interval,t.* from user_jobs t; job job的唯一標識,自動產生的   broken 是否處於運行狀態,N;運行;Y:停止   what 預存程序名稱next_date 初次執行時間    interval 執行循環  刪除:begin dbms_job.remove(jobno); end;根據what的內容確定其對應的job,並如此執行刪除執行時間例子:描述                    INTERVAL參數值   每天午夜12點            ''TRUNC(SYSDATE + 1)''   每天早上8點30分         ''TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)''   每星期二中午12點         ''NEXT_DAY(TRUNC(SYSDATE ), ''''TUESDAY'''' ) + 12/24''   每個月第一天的午夜12點    ''TRUNC(LAST_DAY(SYSDATE ) + 1)''   每個季度最後一天的晚上11點 ''TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), ''Q'' ) -1/24''   每星期六和日早上6點10分    ''TRUNC(LEAST(NEXT_DAY(SYSDATE, ''''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)''  每3秒鐘執行一次             'sysdate+3/(24*60*60)' 每2分鐘執行一次           'sysdate+2/(24*60)' 1:每分鐘執行Interval => TRUNC(sysdate,'mi') + 1/ (24*60) --每分鐘執行interval => 'sysdate+1/(24*60)'  --每分鐘執行interval => 'sysdate+1'    --每天interval => 'sysdate+1/24'   --每小時interval => 'sysdate+2/24*60' --每2分鐘interval => 'sysdate+30/24*60*60'  --每30秒2:每天定時執行Interval => TRUNC(sysdate+1)  --每天淩晨0點執行Interval => TRUNC(sysdate+1)+1/24  --每天淩晨1點執行Interval => TRUNC(SYSDATE+1)+(8*60+30)/(24*60)  --每天早上8點30分執行3:每周定時執行Interval => TRUNC(next_day(sysdate,'星期一'))+1/24  --每周一淩晨1點執行Interval => TRUNC(next_day(sysdate,1))+2/24  --每周一淩晨2點執行4:每月定時執行Interval =>TTRUNC(LAST_DAY(SYSDATE)+1)  --每月1日淩晨0點執行Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24  --每月1日淩晨1點執行5:每季度定時執行Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'q')  --每季度的第一天淩晨0點執行Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'q') + 1/24  --每季度的第一天淩晨1點執行Interval => TRUNC(ADD_MONTHS(SYSDATE+ 2/24,3),'q')-1/24  --每季度的最後一天的晚上11點執行6:每半年定時執行Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24  --每年7月1日和1月1日淩晨1點7:每年定時執行Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24  --每年1月1日淩晨1點執行相關方法:修改要執行的操作:dbms_job.what(jobno,'sp_fact_charge_code;');  --修改某個job名修改下次執行時間:dbms_job.next_date(job,next_date);修改間隔時間:dbms_job.interval(job,interval); 停止job:dbms.broken(job,broken,nextdate); dbms_job.broken(v_job,true,next_date);        --停止一個job,裡面參數true也可是false,next_date(某一時刻停止)也可是sysdate(立刻停止)。  */create or replace procedure proc_auto_exec_job asbegin  declare    job number;    BEGIN      DBMS_JOB.SUBMIT(        JOB => job,  /*自動產生JOB_ID*/        WHAT => 'proc_test_job;',  /*需要執行的過程或SQL語句*/        /*NEXT_DATE => sysdate, */ /*初次執行時間,立刻執行*/        /*INTERVAL => 'sysdate+3/(24*60*60)' */ /*執行循環 -每3秒鐘*/        NEXT_DATE => TRUNC(SYSDATE+1)+(0*60+30)/(24*60),  /*初次執行時間,12點30分*/        INTERVAL => 'TRUNC(SYSDATE+1)+(0*60+30)/(24*60)'  /*每天12點30分*/      );        COMMIT;      /*dbms_job.submit(job, 'proc_test_job;', sysdate, 'trunc(sysdate,''mi'')+1/(24*60)'); /*執行循環 -每1分鐘*/      commit;*/            DBMS_JOB.RUN(job);    end;end proc_auto_exec_job;begin proc_auto_exec_job; end;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.