一个oracle的job:
declare
  job_tbl number;
begin
  sys.dbms_job.submit(job => job_tbl,
                      what => 'clear_tbl;',
                      next_date => trunc(SYSDATE)+30/1440,
                      interval => 'trunc(sysdate)+30/1440');
  commit;
end;
/这里要求每天00:30执行clear_tbl这个存储过程,现在clear_tbl存储过程执行没问题,且单独手工运行这个job也没问题,但一旦让它自己定时运行就报错,我猜测,是否是interval => 'trunc(sysdate)+30/1440')这里的时间采用与next_date一致,所以当在trunc(SYSDATE)+30/1440执行了该job后,由于间隔时间也是当前时间,所以报错,改为:
declare
  job_tbl number;
begin
  sys.dbms_job.submit(job => job_tbl,
                      what => 'clear_tbl;',
                      next_date => trunc(SYSDATE)+30/1440,
                      interval => 'trunc(sysdate+1)+30/1440');
  commit;
end;
/
即可,是这么理解么?谢谢!

解决方案 »

  1.   

    下一个时间应该是 xxxx年xx月xx天 00:30
    间隔时间应该是一天
      

  2.   

    BEGIN
    sys.dbms_scheduler.create_job(
      job_name => '"YANFA"."JOB_UPDATE_RUNSTATE"',
      job_type => 'STORED_PROCEDURE',
      --调用的命令类型,此处调用存储过程
      job_action => 'YANFA.PRO_UPDATE_RUNSTATE',
      --每10分钟运行一次
      repeat_interval => 'FREQ=MINUTELY;INTERVAL=10',
      --每10秒钟运行一次
      --repeat_interval => 'FREQ=SECONDLY;INTERVAL=10',
      start_date => systimestamp at time zone '+8:00',
      job_class => 'DEFAULT_JOB_CLASS',
      auto_drop => FALSE,
      enabled => FALSE
    );
    sys.dbms_scheduler.set_attribute( name => '"YANFA"."JOB_UPDATE_RUNSTATE"', attribute => 'restartable', value => TRUE); 
    sys.dbms_scheduler.enable( '"YANFA"."JOB_UPDATE_RUNSTATE"' ); 
    END;