这种方法不外乎有两种:
一、走数据库,调用dmbs.job
二、通过系统,制作任务

解决方案 »

  1.   

    declare
        v_job number;
    begin
        dbms_job.submit(v_job,'存储过程名(参数);',sysdate,'sysdate+1');
    end;这样,系统分配一个JOB号,每天自动提交一次存储过程,可以用
    select * from all_jobs
    查看.
      

  2.   

    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;