Oracle 提供了 dbms_job 包,看看这个吧:http://www.oradb.net/pack/pack_001.htm

解决方案 »

  1.   

    直接给你代码Create Or Replace Procedure Auto_Cljs_Job (v_timestr In Varchar2,v_jobno Out Varchar2,v_msg Out Varchar2) Is/******************************************************************************
       PURPOSE:  自动潮流计算Job的建立与更改     REVISIONS:
       Ver        Date        Author           Description
       ---------  ----------  ---------------  ------------------------------------
       1.0        2003-10-17   Fred Zhang       1. Created this procedure.
    ******************************************************************************/
    jobno Integer;
    jobid Integer;
    Begin
      Select job Into jobid From all_jobs Where what='AUTO_CLJS;';          
        dbms_job.Change(jobid,'AUTO_CLJS;',To_Date(To_Char(Sysdate,'yyyy-mm-dd')||' '||V_timestr,'yyyy-mm-dd hh24:mi:ss'),'trunc(sysdate,''mi'')+1');
        Commit;
        v_jobno:=jobid;
        v_msg:='恭喜你!自动计算设定已经成功更改!'; 
        Exception When No_Data_Found Then
          dbms_job.submit(jobid,'AUTO_CLJS;',To_Date(To_Char(Sysdate,'yyyy-mm-dd')||' '||V_timestr,'yyyy-mm-dd hh24:mi:ss'),'trunc(sysdate,''mi'')+1');
          Commit;
          v_jobno:=jobid;
          v_msg:='恭喜你!自动计算已经成功设定!';          End  Auto_Cljs_Job;CREATE OR REPLACE PROCEDURE Auto_Cljs_Job_Start_Stop (result OUT VARCHAR2) IS
    tmpVar NUMBER;
    /******************************************************************************
       PURPOSE:   自动潮流计算Job的启动与停止   REVISIONS:
       Ver        Date        Author           Description
       ---------  ----------  ---------------  ------------------------------------
       1.0        2003-10-18   Fred Zhang       1. Created this procedure.
    ******************************************************************************/
    jobid INTEGER;
    job_status VARCHAR2(1);
    BEGIN
      SELECT job,broken INTO jobid,job_status FROM all_jobs WHERE what='AUTO_CLJS;';
            IF job_status='N' THEN
                dbms_job.broken(jobid,TRUE);
                COMMIT;
                result:='恭喜你!自动计算设定已经停止!';
            ELSE
                dbms_job.broken(jobid,FALSE);
                COMMIT;
                result:='恭喜你!自动计算设定已经开始!';
            END IF;
            EXCEPTION 
              WHEN NO_DATA_FOUND THEN 
                   result:='对不起,你还没有设定此Job!';  
      WHEN OTHERS THEN
                   NULL;
    END Auto_Cljs_Job_Start_Stop;
    /