只有What,Next date, Interval,Broken这几个参数是必填的么?
分别是什么含意我想做一个job,在每天23点的时候调用一个存储过程 pro_test每天调用一次就可以了该怎么实现呢

解决方案 »

  1.   

    what            pro_test;
    next_date       2006-8-25 23:00:00
    interval        trunc(sysdate+1)+23/24
    broken不用选
      

  2.   

    谢谢 sxykje(我爱老婆) 我测试一下
      

  3.   

    我的创建作业的代码如下
    想在每天23点执行my_proc这个存储过程。DECLARE
      X NUMBER;
    BEGIN
      SYS.DBMS_JOB.SUBMIT
        ( job       => X 
         ,what      => 'my_proc;'
         ,next_date => sysdate
         ,interval  => 'trunc(sysdate + 1) + 23 / 24'
         ,no_parse  => TRUE
        );
      SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
    commit;
    END;现在这个代码编译可以通过,但是运行的时候提示下面的错误消息:ORA-12011:无法执行1作业 
    ORA-06512:在"SYS.DBMS_IJOB",line406 
    ORA-06512:在"SYS.DBMS_JOB",line272 
    ORA-06512:在line1是什么原因阿,是创建作业的代码有问题么,希望各位高手指点
      

  4.   

    是不是已经创建JOB了?可能是JOB ID的问题
    建议创建JOB前,先删除已有的JOB,再创建试试下面的代码:
    --*****************任务***********************
    --注:Set serveroutput on等是改变SQL*PLUS或者SQL*PLUS WorkSheet的会话SET SERVEROUTPUT ON;
    Alter session set NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';--先删除JOB
    DECLARE
    JOB BINARY_INTEGER; --任务ID
    CURSOR cur_job is select job from user_jobs;
    begin
    open cur_job;
    fetch cur_job into JOB;
    while cur_job%FOUND
    loop
    DBMS_JOB.REMOVE(JOB);
    commit;
    fetch cur_job into JOB;
    end loop;
    close cur_job;
    end;
    /--创建JOB
    DECLARE
    JOB BINARY_INTEGER; --任务ID
    v_begin DATE; --开始时间
    v_interval VARCHAR2(50); --时间间隔
    BEGIN
    v_begin := SYSDATE;
    v_interval := 'trunc(SYSDATE+1) + 23 / 24'';
    DBMS_JOB.SUBMIT(JOB,'my_proc;',v_begin,v_interval,FALSE,0,FALSE);
    DBMS_OUTPUT.PUT_LINE('JOB(任务)编号:' || JOB);
    COMMIT;
    END;
    /