DECLARE job_no_ NUMBER; BEGIN DBMS_JOB.SUBMIT(job_no_, 'PRoc_qszx_dw_sc(''040100'');', -- 一般會將 insert into 語句寫到一個存儲過程insert_Prod中 sysdate, 'TRUNC(sysdate)+1+2/24'); -- 2/24 每天凌晨2點 COMMIT;END;
select job,last_date,last_sec,next_sec,total_time,interval,whatfrom user_jobs
用法DEMO:
DBMS_JOB.SUBMIT(:jobno,//job號
'your_procedure;',//要執行的過程
trunc(sysdate)+1/24,//下次執行時間
'trunc(sysdate)+1/24+1'//每次間隔時間
);
刪除job:dbms_job.remove(jobno);
修改要執行的操作:job:dbms_job.what(jobno,what);
修改下次執行時間:dbms_job.next_date(job,next_date);
修改間隔時間:dbms_job.interval(job,interval);
停止job:dbms.broken(job,broken,nextdate);
啟動job:dbms_job.run(jobno);
附:調用語句和參數說明:
dbms_job.submit(joboutbinary_integer,
what in archar2,
next_date in date,
interval in varchar2,
no_parse in boolean)
其中:
●job:輸出變量,是此任務在任務隊列中的編號;
●what:執行的任務的名稱及其輸入參數;
●next_date:任務執行的時間;
●interval:任務執行的時間間隔。
DEMO示例:
declare
jobidnumber;
v_sqlvarchar2(2000);
begin
v_sql:='begin
ifto_char(sysdate,''HH24:MI'')=''15:30''then--15:30執行
insertintorjck.rkjl(cksj)selectcksjfromwzcs.ckjl;
dbms_output.put_line(''insertedsuccess'');
endif;
commit;
exception
whenothersthen
rollback;
dbms_output.put_line(SQLERRM);
end;
';
dbms_job.submit(jobid,v_sql,sysdate,'sysdate+1/1440');
dbms_job.run(jobid);
dbms_output.put_line('job'||to_char(jobid)||'isrunning');
end;
親身實踐過的demo:
begin dbms_job.what('405','day_dw_sc_for_gsdm(''040100'');'); --dbms_job.remove('404'); /* job_no_ NUMBER; BEGIN DBMS_JOB.SUBMIT(job_no_, 'proc_qszx_dw_sc(''040100'');', -- 一般會將 insert into 語句寫到一個存儲過程insert_Prod中 sysdate, 'TRUNC(sysdate)+1+6/24'); -- 2/24 每天凌晨2點 COMMIT;*/END;
新聞熱點
疑難解答