zoukankan      html  css  js  c++  java
  • 使用自制事务进行异常信息的记录:Autonomous transactionslog

    建立错误信息表:

    1     CREATE TABLE error_logs ( 
    2 id NUMBER(10) NOT NULL,
    3 log_timestamp TIMESTAMP NOT NULL,
    4 error_message VARCHAR2(4000),
    5 CONSTRAINT error_logs_pk PRIMARY KEY (id)
    6 );

    --过程的建立(使用自制事务)

     1 CREATE OR REPLACE PROCEDURE LOG_ERRORS(P_ERROR_MESSAGE IN VARCHAR2) AS
    2 PRAGMA AUTONOMOUS_TRANSACTION;
    3 BEGIN
    4 INSERT INTO ERROR_LOGS
    5 (ID, LOG_TIMESTAMP, ERROR_MESSAGE)
    6 VALUES
    7 --SYS_GUID()表示获得32位的序列号
    8 (SYS_GUID(), SYSTIMESTAMP, P_ERROR_MESSAGE);
    9 COMMIT;
    10 END;

    手动的抛出异常信息,并会滚,但是错误正常记录:

    --错误信息表

    --------测试:

     1 DECLARE
    2 V_EXP EXCEPTION;
    3 BEGIN
    4 INSERT INTO USER_INFO (USER_NAME, ID) VALUES ('小光', 5);
    5 RAISE V_EXP;
    6 EXCEPTION
    7 WHEN OTHERS THEN
    8 LOG_ERRORS(P_ERROR_MESSAGE => SQLERRM);
    9 ROLLBACK;
    10 END;

    结果:没有新增数据

    异常日志信息表:


    自治事务的唯一用法就是日志的记录:

    http://www.itpub.net/thread-1892664-1-1.html

    牢牢记住TOM的话:
    自治事务的唯一用途就是记录出错日志。其他用法可以说都是错的。

    I believe that we are who we choose to be. Nobody‘s going to come and save you, you‘ve got to save yourself. 我相信我们成为怎样的人是我们自己的选择。没有人会来拯救你,你必须要自己拯救自己。
  • 相关阅读:
    发送xml请求数据,返回数据怎么获取
    laravel打印sql语句
    布隆过滤器-使用场景的思考
    sql性能优化
    JS Date.parse() 函数详解
    vuejs中的watch监听属性
    JS正则test()方法
    golang实现简单线程池
    golang map实现set
    golang init函数
  • 原文地址:https://www.cnblogs.com/caroline/p/2322595.html
Copyright © 2011-2022 走看看