将错误信息插入一张表中的例子:
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;
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;
通过exception 调用存储过程把sqlcode,sqlerrm或者你自己的信息传入记录下来。
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;
begin
EXCEPTION
BEGIN
END;
...
EXCEPTION
BEGIN END;END...;