--创建测试表
create table test_user(name varchar2(20),age int,addr varchar2(50));
--创建一个自定义过程
create or replace procedure test_procedureas is
--注意创建一个job用到的函数是sys.dbms_job.submit()函数
--该函数里面的第一个参数是job用来唯一表示job的 ,是out型的,就像procedure中的int相对应的out一样
--该参数是函数方法返回的参数
declare
--注意创建完毕后要提交事物
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后需要提交事物