oracle 定時運行存儲過程的實現


是基於PL/SQL 可視化工具的實現;
 
首先,先編寫一個存儲過程
 
點擊procedure,右鍵新建,填寫一個你編寫的存儲過程的名字;
 
如果是對正常的表進行操作,那么直接在begin和end之間寫sql腳本就可以了;
 
但是我寫的是臨時表,在Oracle存儲過程中,是不允許使用DDL語句的,比如create,alter,drop,translate;
 
所以只能使用動態sql語句,具體語法是:
 
create or replace procedure pro as
     str_sql  varchar(400)   
     --用來存儲sql
begin
     
     str_sql='這里寫腳本';
     --此處可以放置DDL語句
     execute immediate str_sql;
end;
 
值得注意的是,在str_sql中,當遇到sql中經常使用的單引號時,解釋器會認為出了問題;
需要使用2個單引號‘’來代替單引號‘;
 
寫完存儲過程之后就是寫定時任務了:
右鍵DBMS_Jobs 新建
 
在what中填入存儲過程的名字;
填寫你希望的存儲過程下一個執行的日期;
填入時間間隔:TRUNC(LAST_DAY(SYSDATE))+5+2/24;這句話的意思是每個月的5號的凌晨兩點;
 
例子如下:
1、每分鍾執行
Interval => TRUNC(sysdate, 'mi')+1/(24*60)
2、每天定時執行
例如:每天的凌晨2點執行
Interval => TRUNC(sysdate)+1+2/(24)
3、每周定時執行
例如:每周一凌晨2點執行
Interval => TRUNC(next_day(sysdate, 2))+2/24 --星期一,一周的第二天
4、每月定時執行
例如:每月1日凌晨2點執行
Interval => TRUNC(LAST_DAY(SYSDATE))+1+2/24
5、每季度定時執行
例如每季度的第一天凌晨2點執行
Interval => TRUNC(ADD_MONTH(SYSDATE), 3),'Q')+2/24
6、每半年定時執行
例如:每年7月1日和1月1日凌晨2點
Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24
7、每年定時執行
例如:每年1月1日凌晨2點執行
Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),12)+2/24
 
再點擊應用即可。
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM