如何使JOB每月执行一次?

解决方案 »

  1.   

    以下是定期运行分析的例子:variable job1 number;
    variable v_char VARCHAR2(6);
    begin
       
       :v_char:=to_char(sysdate,'yyyy')||to_char(sysdate,'mm');
      dbms_job.submit(:job1, 'begin
      DBMS_STATS.GATHER_SCHEMA_STATS(ownname => ''AA'',method_opt => ''FOR ALL COLUMNS SIZE REPEAT'',cascade => TRUE);
      DBMS_STATS.GATHER_SCHEMA_STATS(ownname => ''BB'',method_opt => ''FOR ALL COLUMNS SIZE REPEAT'',granularity=>''ALL'',cascade => TRUE);
      end ;', trunc(sysdate+1,'DD'), 'TRUNC(LAST_DAY(SYSDATE )+5)');
      commit;
    end;
    /
      

  2.   

    TRUNC(LAST_DAY(SYSDATE )+5)在JOB里用这句来限定时间就行了
      

  3.   

    你要每个月的什么时候执行啊?
    如下面的JOB,是从2007年9月1日的00:00:00执行第一次,然后每个月的第一天再执行一次DECLARE
      X NUMBER;
    BEGIN
      SYS.DBMS_JOB.SUBMIT
        ( job       => X 
         ,what      => 'BSWXWMS.CREATESTOREINFO;'
         ,next_date => to_date('01-09-2007 00:00:00','dd/mm/yyyy hh24:mi:ss')
         ,interval  => TRUNC(LAST_DAY(SYSDATE)) + 1 
         ,no_parse  => TRUE
        );
      SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
    END;
    /commit;