oracle 里面定时执行任务,比如存储过程内容等
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,what
from 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(?job?out?binary_integer,
?
what in archar2,
next_date ? in date,
interval in varchar2,
no_parse in boolean)
其中:
●????job:輸出變量,是此任務在任務隊列中的編號;
●????what:執行的任務的名稱及其輸入參數;
●????next_date:任務執行的時間;
●????interval:任務執行的時間間隔。
?
?DEMO示例:
?
declare???
????????????????jobid?????number;???
????????????????v_sql?????varchar2(2000);???
????begin???
????????????????v_sql:='begin???
??????????????????????????????????????if?????to_char(sysdate,''HH24:MI'')=''15:30''?????then???--?15:30執行
????????????????????????????????????????????insert?????into?????rjck.rkjl(cksj)?????select?????cksj?????from?????wzcs.ckjl;???
????????????????????????????????????????????dbms_output.put_line(''inserted?????success'');???
??????????????????????????????????????end?????if;???
??????????????????????????????????????commit;???
????????????????????????????????exception???
??????????????????????????????????????when?????others?????then???
??????????????????????????????????????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)||'?????is?????running');????
?
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;
轉載于:https://www.cnblogs.com/bluedy1229/p/3504230.html
總結
以上是生活随笔為你收集整理的oracle 里面定时执行任务,比如存储过程内容等的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UML_行为图
- 下一篇: java synchronized关键字