oracle數據庫做定時任務(插入) 筆記

--創建測試表

create table test_user(name varchar2(20),age int,addr varchar2(50));

--創建一個自定義過程

create or replace procedure test_procedureas  is
begin
 insert into test_user values('張三',23,'北京');
 insert into test_user values('張四',33,'上海');
 insert into test_user values('張五',53,'北京');
end;

 

--注意創建一個job用到的函數是sys.dbms_job.submit()函數

--該函數裏面的第一個參數是job用來唯一表示job的 ,是out型的,就像procedure中的int相對應的out一樣

--該參數是函數方法返回的參數

declare  
test_job number;     
begin
  sys.dbms_job.submit(test_job,'test_procedureas;',sysdate,'sysdate+10/1440');
end;

 

--注意創建完畢後要提交事物

commit;

 

--從user_jobs表裏面查詢job;如果有則說明job創建成功了

select * from user_jobs


--**********************運行job    ,25是創建的那個job(user_jobs表中的job字段)

begin

 dbms_job.run(25);

end;

 

--*********************修改job的間隔時間

begin

 dbms_job.interval(25,'sysdate+1');

end;

 

--*********************刪除job

begin

 dbms_job.remove(25);

end;

/*

    相關的幾個JOB操作

 

8 25 11:30

selectto_char(add_months(sysdate,2),'yyyy-mm-dd') from dual


 

刪除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);

*/

 

每天午夜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)'

 

注意建立job後需要提交事物

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