oracle 定時執行存儲過程和刪除定時任務

用job
oracle定時器調用存儲過程  
 1.創建一個表,爲了能清楚看到定時器的運行情況我們創建一個帶有日期字段的表 
  Sql代碼  
create table job_table(run_time date);  

create table job_table(run_time date);
2.創建存儲過程 
  Sql代碼  
create or replace procedure job_proc is  
begin  
  insert into job_table (run_time) values (sysdate);   
end;  

create or replace procedure job_proc is
begin
  insert into job_table (run_time) values (sysdate);
end;
3.創建job,並且指定爲一分鐘執行一次 
  Sql代碼  
declare  
  job number;   
begin  
  dbms_job.submit(job, 'job_proc;', sysdate, 'TRUNC(sysdate,''mi'') + 1 / (24*60)');   
end/   
commit;  

declare
  job number;
begin
  dbms_job.submit(job, 'job_proc;', sysdate, 'TRUNC(sysdate,''mi'') + 1 / (24*60)');
end/
commit;
4.創建之後自動處於運行狀態,我們查詢job表,看看我們創建的job 
  Sql代碼  
select job,broken,what,interval,t.* from user_jobs;   

    參數介紹   
  job job的唯一標識,自動生成的 
  broken 是否處於運行狀態,N;運行;Y:停止 
  what 存儲過程名稱 
  interval 定義的執行時間 

補充: 
描述                    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)''

--刪除定時任務,括號裏爲user_jobs表中job字段的編號
exec dbms_job.remove(61);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章