高分请教高手,如何让oracle 8i自动执行一段已经写好的sql???

解决方案 »

  1.   

    用job
    例子:每小时运行一次Procdemo过程
    VARIABLE jobno number;
    begin
          DBMS_JOB.SUBMIT(:jobno, 
                  'Procdemo;', 
                   SYSDATE, 'SYSDATE + 1/24');
             commit;
    end;
    /
      

  2.   

    SQL> create table aa(a number,b date);Table createdSQL> 
    SQL> create or replace procedure pro
      2  is
      3  begin
      4  insert into aa values(1,sysdate);
      5  end;
      6  /Procedure createdQL> declare
      2  jobno number;
      3  begin
      4  dbms_job.submit(jobno,'pro;',sysdate,'sysdate+1/(24*60)');
      5  commit;
      6  end;
      7  /
     
      

  3.   

    工具->数据库应用程序->SQL* PLUS WorkSheet...
    打开.sql文件,执行!ok
      

  4.   

    将此 sql语句放在存储过程中,利用任务实现
    在sql plus中
    variable job1 number; 
    dbms_job.submit(:job1,'存储过程名;',sysdate,'sysdate+1/1440');  --每天1440分钟,即一分钟运行test过程一次
      

  5.   

    用DBMS_JOB--->
    DBMS_Job包的用法:1、Broken()过程更新一个已提交的工作的状态,典型地是用来把一个已破工作标记为未破工作。
    2、Change()过程用来改变指定工作的设置。
    3、Interval()过程用来显式地设置重执行一个工作之间的时间间隔数。
    4、ISubmit()过程用来用特定的工作号提交一个工作。
    PROCEDURE ISubmit (job       IN binary_ineger,
                      What      IN varchar2,
                       next_date IN date,
                       interval  IN varchar2,
    5、Next_Date()过程用来显式地设定一个工作的执行时间                   
    6、Remove()过程来删除一个已计划运行的工作。
    7、Run()过程用来立即执行一个指定的工作