--創建測試表
create table test_user(name varchar2(20),age int,addr varchar2(50));
--創建一個自定義過程
create or replace procedure test_procedureas isbegin
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一樣
--該參數是函數方法返回的參數
declaretest_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後需要提交事物