将错误信息插入一张表中的例子:
create or replace procedure ...
v_error_code NUMBER; 
v_error_message VARCHAR2(255); 
BEGIN 
... 
EXCEPTION 
... 
WHEN OTHERS THEN 
ROLLBACK; 
v_error_code := SQLCODE ; 
v_error_message := SQLERRM ; 
INSERT INTO errors VALUES(v_error_code, 
v_error_message); 
END;

解决方案 »

  1.   

    写一个存储过程专门写本地文件,用utl_file包即可达到这个目的。
    通过exception 调用存储过程把sqlcode,sqlerrm或者你自己的信息传入记录下来。
      

  2.   

    declare
     v_errorcode NUMBER; 
     v_errortext VARCHAR2(200); 
    begin
    ... 
    EXCEPTION 
    ... 
    WHEN OTHERS THEN 
     v_errorcode := SQLCODE; 
     v_errortext := substr(SQLERRM,1,200); 
     INSERT INTO log_table(code,message,info) VALUES(v_errorcode, 
    v_errortext,'oracle error occurred'); 
    END;
      

  3.   

    ...
    begin
      EXCEPTION
      BEGIN
      END;
     ...
      EXCEPTION
      BEGIN  END;END...;