我总结了几个,但是都有缺点:
1 dbms_output.put_line
缺点是如果不set serveroutput on 日志就无法显示
2 写日志表
缺点是,存储过程异常,日志就会丢失。 并且写表数据库消耗大 (当然,这是个小问题)
3 自治事务写日志表
缺点是,数据库消耗大(因为每写一条日志都是一个事务)
4 调用utl_file写日志
缺点是,只能在数据库服务器使用,并且需要创建directory的权限。这个不是开发、维护人员轻易能获得的
create procedure pro_a_testlogrollback as v_val number; begin insert into a_testdata values(3); v_val := 1/0; exception when others then rollback; insert into a_testlog values(sysdate,'异常操作已经回滚'); commit; end;