我有一个存储过程Event_Total_Count,想每天16点执行这个存储过程?

解决方案 »

  1.   

    DECLARE
      X NUMBER;
    BEGIN
      SYS.DBMS_JOB.SUBMIT
      ( job       => X 
       ,what      => 'Event_Total_Count;'
       ,next_date => to_date('20/09/2008 16:00:00','dd/mm/yyyy hh24:mi:ss')
       ,interval  => 'trunc(SYSDATE+1)+4/6'
       ,no_parse  => FALSE
      );
      SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
    COMMIT;
    END;
      

  2.   

    interval  => 'trunc(SYSDATE+1)+4/6'
    这个用
    interval  => 'SYSDATE+1'
    也可以的,不过主要怕第一次执行的时间可能不是16点,就会造成每次执行都是第一次执行的时间+1天,所以用
    interval  => 'trunc(SYSDATE+1)+4/6'
    比较保险
      

  3.   

    DECLARE
      X NUMBER;
    BEGIN
      SYS.DBMS_JOB.SUBMIT
        ( job       => X 
         ,what      => 'Event_Total_Count;'
         ,next_date => TO_DATE('19-09-2008 16:00:00','dd/mm/yyyy hh24:mi:ss')
         ,INTERVAL  => 'TRUNC(SYSDATE+1)'
         ,no_parse  => TRUE
        );
      SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || TO_CHAR(x));
    END;
    /COMMIT;上面是我写的job,但第一次执行完以后job就变成:DECLARE
      X NUMBER;
    BEGIN
      SYS.DBMS_JOB.SUBMIT
        ( job       => X 
         ,what      => 'Event_Total_Count;'
         ,next_date => TO_DATE('20-09-2008 00:00:00','dd/mm/yyyy hh24:mi:ss')
         ,INTERVAL  => 'TRUNC(SYSDATE+1)'
         ,no_parse  => TRUE
        );
      SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || TO_CHAR(x));
    END;
    /COMMIT;不知道什么原因?
      

  4.   

    你这个自然是喽,第一次执行是16
    下次是当前时间取整+1
    时间取整,就是0点,再加1就是第二天0点
    要么用sysdate+1
    要么用trunc(sysdate+1)+4/6