dbms_job 定時計劃

抬頭看見班主任發表於2015-03-05
建立一個儲存過程:
create or replace procedure ljn_test
is
ljn_a varchar2(100);
begin 
 ljn_a := 'truncate table  ljn';
  execute immediate ljn_a;
  insert into ljn select * from Kx_Order_Info_d;
commit;
  dbms_output.put_line('插入成功');
end ljn_test;
建立一個包:制定執行計劃
declare
  ljn_job number;
begin
  dbms_job.submit(ljn_job, 'ljn_test;', sysdate, 'sysdate+10/24*60*60'); -- 每10s執行一次
end;

執行一個包:
查出一個包的id
select * from user_jobs;
begin 
dbms_job.remove(41);
end;

檢視執行的包:
select * from user_jobs_running;

刪除一個包:
begin
   dbms_job.remove(26);--和select * from user_jobs; 中的job值對應
end;    

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)
每秒鐘執行次
Interval =< sysdate + 1/(24 * 60 * 60)
如果改成sysdate + 10/(24 * 60 * 60)就是10秒鐘執行次
每分鐘執行
Interval =< TRUNC(sysdate,'mi') + 1/ (24*60)
如果改成TRUNC(sysdate,'mi') + 10/ (24*60) 就是每10分鐘執行次
每天定時執行
例如:每天的凌晨1點執行
Interval =< TRUNC(sysdate) + 1 +1/ (24)
每週定時執行
例如:每週一凌晨1點執行
Interval =< TRUNC(next_day(sysdate,'星期一'))+1/24
每月定時執行
例如:每月1日凌晨1點執行
Interval =
每季度定時執行
例如每季度的第一天凌晨1點執行
Interval =< TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24
每半年定時執行
例如:每年7月1日和1月1日凌晨1點
Interval =< ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24
每年定時執行
例如:每年1月1日凌晨1點執行
Interval =



















來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30152793/viewspace-1449347/,如需轉載,請註明出處,否則將追究法律責任。

dbms_job 定時計劃
請登入後發表評論 登入
全部評論

相關文章