生活随笔
收集整理的這篇文章主要介紹了
ORACLE 定时执行存储过程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
推薦用dbms_scheduler方式更好 (2012-11-19注)
[sql]?view plaincopy
/*???查詢:??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'?interval?=>?'sysdate+30/24*60*60'??2:每天定時執行??Interval?=>?TRUNC(sysdate+1)??Interval?=>?TRUNC(sysdate+1)+1/24??Interval?=>?TRUNC(SYSDATE+1)+(8*60+30)/(24*60)??3:每周定時執行??Interval?=>?TRUNC(next_day(sysdate,'星期一'))+1/24??Interval?=>?TRUNC(next_day(sysdate,1))+2/24??4:每月定時執行??Interval?=>TTRUNC(LAST_DAY(SYSDATE)+1)??Interval?=>TRUNC(LAST_DAY(SYSDATE))+1+1/24??5:每季度定時執行??Interval?=>?TRUNC(ADD_MONTHS(SYSDATE,3),'q')??Interval?=>?TRUNC(ADD_MONTHS(SYSDATE,3),'q')?+?1/24??Interval?=>?TRUNC(ADD_MONTHS(SYSDATE+?2/24,3),'q')-1/24??6:每半年定時執行??Interval?=>?ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24??7:每年定時執行??Interval?=>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24????相關方法:??修改要執行的操作:dbms_job.what(jobno,'sp_fact_charge_code;');??修改下次執行時間: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);????????*/????create?or?replace?procedure?proc_auto_exec_job?as??begin????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; ? ref:http://blog.csdn.net/thinkscape/article/details/7411012
總結
以上是生活随笔為你收集整理的ORACLE 定时执行存储过程的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。