日期:2014-05-17  浏览次数:20873 次

关于oracle job 提问,紧急
要实现的目标是每天的0点0分执行
update   bbsleftTree   set   flag_3=0;该语句一次。开始时间是明天早上的0点0分

参考别人的代码,如下:
----创建job

----创建一个自定义过程
  SQL>   create   or   replace   procedure   MYPROC   as
   2 begin
   3 update   bbslefttree   set   flag_3=0;
   4 end;
   5 /

SQL>   variable   job1   number;

  SQL>  

  SQL>   begin

   2 dbms_job.submit(:job1, 'MYPROC; ',sysdate, 'sysdate+1 ');  --每天执行一次

   3 end;

   4 /

----运行JOB
  SQL>   begin
   2 dbms_job.run(:job1);
   3 end;
   4 /

----将job的初始运行时间改为2007-05-24   00:00:00
SQL>   begin      
    2     DBMS_JOB.CHANGE(:job1,null,to_date( '2007-05-24   00:00:00 '),null);      
    3     end;

不知道是否有问题?请帮忙看看,

------解决方案--------------------
1.应该在update bbslefttree set flag_3=0;
后面加上commit;
2.参考例子:
SQL> variable jobno number;
SQL> begin
sys.dbms_job.submit(job => :jobno,
what => 'jyc_undo_set; ',
next_date => to_date( '29-04-2007 00:00:00 ', 'dd-mm-yyyy hh24:mi:ss '),
interval => 'trunc(sysdate, ' 'DD ' ')+1 '
);
end;
/