oracle创建job
?variable?job_feeid_create??NUMBER;
?begin?
????sys.dbms_job.submit(:job_feeid_create,'wlk_check_fee;',sysdate,'TRUNC(SYSDATE+1)');
?commit;
?end;描述????????????????????INTERVAL参数值?
每天午夜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)'?
?begin
??dbms_job.run(:job_feeid_create);
??end;select???*???from???user_jobsdbms_job.submit(?job?out?binary_integer,?
what in archar2,?
next_date ? in date,?
interval in varchar2,?
no_parse in boolean)?sql>;?variable?n?number;?
sql>;?begin?
dbms_job.submit(:n‘my_job;’,sysdate,?
‘sysdate+1/360’);?
commit;?
end;?
/?Sql>;?print?:n;?sql>;?select?job,next_date,next_sec,failures,broken?from?user_jobs;????????? 执行结果如下:
???????? job next_date next_sec failures broken?
???????? 300 2000/10/10 11:45:15 0 N?
?????????这表示任务号为300的任务,下一次将在2000/10/10 11:45:15执行,此任务的执行失败记录为0次。注意:当执行job出现错误时,Oracle将其记录在日志里,失败次数每次自动加1。当执行失败次数达到16时,Oracle就将该job标志为broken。此后,Oracle不再继续执行它,直到用户调用过程dbms_job.broken,重新设置为not broken,或强制调用dbms_job.run来重新执行它。?
???????? 除了以上我们讨论的submit存储过程之外,Oracle还提供了其他许多存储过程来操作任务。例如:dbms_job.change 、 dbms_job.what、dbms_job.interval可以用来修改提交的任务。要想删除该任务,只需运行dbms_job.remove(n)即可,其中n为任务号。?