有3个表 需要每月1号定时删除掉前30天的记录
翻了一下以前的问题 说是用JOB做 不是很明白 谁能给详细说说 谢谢了

解决方案 »

  1.   

    先建成个存储过程
    CREATE OR REPLACE PROCEDURE delet_data
    IS
    BEGIN
       delete test a
          WHERE date<sysdate-30;   COMMIT;
    EXCEPTION
       WHEN NO_DATA_FOUND
       THEN
          NULL;
       WHEN OTHERS
       THEN
          -- Consider logging the error and then re-raise
          RAISE;
    END delete_data;
    /再建个JOB
    DECLARE
      X NUMBER;
    BEGIN
      SYS.DBMS_JOB.SUBMIT
      ( job       => X 
       ,what      => 'delete_data;'
       ,next_date => to_date('13/06/2008 00:00:00','dd/mm/yyyy hh24:mi:ss')
       ,interval  => 'TRUNC(LAST_DAY(SYSDATE)) + 1'
       ,no_parse  => FALSE
      );
      SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
    COMMIT;
    END;
    /
      

  2.   

    你用其它工具试试看,我这直接是从现成的job拷过来的,肯定没问题的
    你在toad或者pl/sql下试试
      

  3.   

    ORA-06550: 第 4 行, 第 3 列:
    PL/SQL: Statement ignored
    DECLARE
    *
    ERROR 位于第 1 行:
    ORA-06550: 第 1 行, 第 93 列:
    PLS-00201: 必须说明标识符 'DELETE_DATA'
    ORA-06550: 第 1 行, 第 93 列:
    PL/SQL: Statement ignored
    ORA-06512: 在"SYS.DBMS_JOB", line 79
    ORA-06512: 在"SYS.DBMS_JOB", line 136
    ORA-06512: 在line 4
      

  4.   

    噢,我上面的存储过程名写的是
    delet_datajob里写的是delete_data
    名字不对