我在数据库中加了一个触发器,如下:
create or replace trigger errors
after servererror on database
begin
insert into err_log
values(sysdate,dbms_utility.format_error_stack);
end errors;
但不知能否也记下出错的SQL语句。
帮你UP,dbms_utility.format_error_stack 只能capture ORACLE exception 而不是SQL
错误的sql在语法分析完后就报错了,不会执行的。
可参考下文建立和加入触发器:
declare
begin
dbms_out.enable;
dbms_output.put_line(SQLCODE:||to_char(SQLCODE));
dbms_output_put_line(SQLERRM:||SQLERRM);
END;
说明:SQLCODE为系统内错误码,SQLERRM为系统错误信息。
倒数第三行改为:
dbms_output.put_line(SQLERRM:||SQLERRM);