用以下语句创建了一个作业,希望每天大概1:50的时候执行存储过程Myproce,但该作业一运行就自动跑起来了,请问这个是怎么回事呢?如何不让其创建作业时就自动跑起来呢?谢谢!
declare job_num number; 
begin 
          dbms_job.submit(job_num,'Myproce;',TRUNC(SYSDATE)+1.84/24,'trunc(sysdate+1)+1.84/24'); 
          commit; 
end; 
/
作业相关信息如下:
LAST_DATE      LAST_SEC THIS_DATE THIS_SEC NEXT_DATE NEXT_SEC  TOTAL_TIME INTERVAL         WHAT
03-26-2009 11:14:18  11:14:18                    03-27-2009 01:50:24  01:50:24   11.00    trunc(sysdate+1)+1.84/24   Myproce;还有一个如果想让该存储过程每月1号和16号执行,这个作业的时间该如何设置呢?

解决方案 »

  1.   

    问题一,修改一下开始执行时间,为下一天的1:50,declare job_num number; 
    begin 
              dbms_job.submit(job_num,'Myproce;',TRUNC(SYSDATE+1)+1/24+50/60/24,'trunc(sysdate+1)+1/24+50/60/24'); 
              commit; 
    end; 
    / 第二个问题,如果是Oracle10g,则很简单,用scheduler实现:
    BEGIN
    DBMS_SCHEDULER.CREATE_JOB(
    job_name => 'My_job',
    job_type => 'STORED_PROCEDURE',
    job_action => 'Myproce',
    start_date => TRUNC(SYSDATE+1)+1/24+50/60/24,
    repeat_interval => 'FREQ=MONTHLY; BYMONTHDAY=1,16; BYHOUR=1; BYMINUTE=50',
    enabled => TRUE
    );
    END;
    /如果不是oracle10g,则用两个jobdeclare job_num number; 
    begin 
              dbms_job.submit(job_num,'Myproce;',TRUNC(ADD_MONTHS(SYSDATE,1),'MM')+1/24+50/60/24,'TRUNC(ADD_MONTHS(SYSDATE,1),'MM')+1/24+50/60/24'); 
              commit; 
    end; 

    declare job_num number; 
    begin 
              dbms_job.submit(job_num,'Myproce;',TRUNC(ADD_MONTHS(SYSDATE,1),'MM')+15+1/24+50/60/24,'TRUNC(ADD_MONTHS(SYSDATE,1),'MM')+15+1/24+50/60/24'); 
              commit; 
    end; 

      

  2.   

    运行下面这句:
    declare job_num number; 
    begin 
              dbms_job.submit(job_num,'Myproce;',TRUNC(ADD_MONTHS(SYSDATE,1),'MM')+1/24+50/60/24,'TRUNC(ADD_MONTHS(SYSDATE,1),'MM')+1/24+50/60/24'); 
              commit; 
    end; 报如下错误:ERROR 位于第 3 行:
    ORA-06550: 第 3 行, 第 131 列:
    PLS-00103: 出现符号 "MM"在需要下列之一时:
    . ( ) , * @ % &
    | = - + < / > at in is mod not range rem => ..
    <an exponent (**)> <> or != or ~= >= <= <> and or like
    between ||
    符号 ".在 "MM" 继续之前已插入。
      

  3.   

    问题找到了,是单引号的原因:declare job_num number; 
    begin 
              dbms_job.submit(job_num,'Myproce;',TRUNC(ADD_MONTHS(SYSDATE,1),'MM')+1/24+50/60/24,'TRUNC(ADD_MONTHS(SYSDATE,1),''MM'')+1/24+50/60/24'); 
              commit; 
    end;