/*
--在oracle中設定排程執行procedure
--參數說明--參數1:為out參數,可由此jobno查詢狀態(註1)/參數2:要執行的procedure名稱/參數3:下次要執行的時間/參數4:要執行的間隔(只要執行一次傳NULL即可)
/*
下面是常有的設置Interval的方法:
每天固定時間運行,比如早上8:10分鐘:Trunc(Sysdate+1) + 8/24
每天:trunc(sysdate+1)
每週:trunc(sysdate+7)
每月:trunc(sysdate+30)
每個星期日:next_day(trunc(sysdate),'SUNDAY')
每天6點:trunc(sysdate+1)+6/24
每半個小時:sysdate+30/1440
*/
/*
DBMS_JOB.SUBMIT(
job OUT BINARY_INTEGER,
what IN VARCHAR2, NEXT_DATE IN DATE DEFAULTSYSDATE,
interval IN VARCHAR2 DEFAULT 'NULL',
no_parse IN BOOLEAN DEFAULT FALSE,
instance IN BINARY_INTEGER DEFAULT ANY_INSTANCE,
force IN BOOLEAN DEFAULT FALSE);
*/
/*
查看執行狀況
select * from user_jobs;
broken=y為任務停止, n為任務啟動成功
*/
--建立程序
declare
jobno number;
begin
dbms_job.submit(jobno, 'sp_ins_stk05_0809;', sysdate, '');
dbms_output.put_line(jobno);
commit;
end;
/
declare
jobno number;
begin
dbms_job.submit(jobno, 'SP_NA_DAILY_STORE_STINE_TRP031(''20161021'',''20161031'');', sysdate + 660/1440, '');
dbms_output.put_line(jobno);
commit;
end;
/
--每天固定時間啟動範例
declare
jobno number;
begin
dbms_job.submit(jobno, 'Gt_Invoice_f_bk(''20161231'');', sysdate, 'trunc(sysdate+1)+6/24');
dbms_output.put_line(jobno);
commit;
end;
/
--移除程序
begin
dbms_job.remove(141);
end;
/
--暫停程序
begin
dbms_job.broken([jobs: 程序#], [broken: true/false], [next_date: 下次一執行日期時間]);
end;
/
--next_date未指定時, 預設為目前的日期時間
--恢復程序
begin
dbms_job.broken(158, false, sysdate);
end;
/
*/
沒有留言:
張貼留言