ORACLE 定時執行存儲過程

<span style="font-size:18px;">推薦用dbms_scheduler方式更好 
實例如下用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 t; 

select job,broken,what,interval,t.* from user_jobs t; 
job broken what interval ... 
81 N job_proc; TRUNC(sysdate,'mi') + 1 / (24*60) ... 

參數介紹 
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)''</span>


發佈了57 篇原創文章 · 獲贊 5 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章