日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ORACLE 定时执行存储过程

發布時間:2024/9/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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'?--每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?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 定时执行存储过程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。