平时在存储过程或者触发器中,想对过程中出现的异常进行记录,但是又存在一个问题,就是异常的时候,之前的DML操作要回滚,那么对异常的记录的insert语句也要被回滚掉,怎么办?这个时候就可以用到Oracle提供的PRAGMA AUTONOMOUS_TRANSACTION(自治事务)。

以下是一个应用的小demo

1.创建会用到的表

create table TEST_LOG(ID NUMBER, ERRTASKID VARCHAR2(18), ERRCODE VARCHAR2(20), ERRCONTENT VARCHAR2(200));

2.创建会用到的序列

create sequence SEQ_TESTLOG minvalue 1 maxvalue 999999999999999999999999999 startwith 1 increment by 1 cache 200;

3.创建记录日志的存储过程

CREATE OR REPLACE PROCEDURE P_LOG_TASKINFO_TASK(err_taskid  in varchar2,--错误的task iderr_oracode in varchar2, --错误内容(代码提示)err_content in varchar2) --错误内容(中文解释)
ISPRAGMA AUTONOMOUS_TRANSACTION;
BEGININSERT INTO test_logVALUES(SEQ_TESTLOG.NEXTVAL, err_taskid, err_oracode, err_content);COMMIT;
END P_LOG_TASKINFO_TASK;

4.测试的存储过程(也可以测试一下 有事务那种,就是业务事务失败,但日志仍有记录,我这儿偷懒了,直接用的1除以0的异常来进行测试):

CREATE OR REPLACE PROCEDURE p_test2(id in varchar2, names in varchar2) isv_i int;
BEGINselect 1 / 0 into v_i from dual;
--处理异常
EXCEPTIONWHEN others THENp_log_taskinfo_task('test_task_id', SQLCODE, SQLERRM);
END p_test2;

5.测试结果查看,测试完成后,对日志表进行查询,如果是有业务存在事务那种,可以查询相关业务表,是否被修改。

select * from test_log 

转载于:https://www.cnblogs.com/nazeebodan/archive/2013/04/01/2994420.html

Oracle提供的自治事务记录日志的方法相关推荐

  1. 关于Oracle AUTONOMOUS TRANSACTION(自治事务)的介绍

    AUTONOMOUS TRANSACTION(自治事务)的介绍 在基于低版本的ORACLE做一些项目的过程中,有时会遇到一些头疼的问题,比如想在执行当前一个由多个DML组成的transaction(事 ...

  2. ORACLE中的自治事务

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 这是一个 ...

  3. oracle触发器的自治事务

    1.插入数据,名次依次+1 今天有朋友提问说 ,oracle数据库怎么实现这个功能: 有一个排名表,插入一条数据排名为1的数据,之前表里数据1变成2,2,变成3类推.插入2,之前表里2变3,3变4类推 ...

  4. Oracle自治事务

    本文章来自http://hi.baidu.com/sqlercn/item/10f170c96fbbfad7964452b8 Oracle自治事务介绍 在正常情况下一但发出commit或是rollba ...

  5. oracle自治事务的写法_Oracle的自治事务

    自治事务(autonomous transaction)允许你创建一个"事务中的事务",它能独立于其父事务提交或回滚.利用自治事务,可以挂起当前执行的事务,开始一个新事务,完成一些 ...

  6. Oracle之自治事务

    昨天处理项目中的一个业务需求要用到触发器实现,触发器中涉及到在inserting.deleting.updating之后来触发对表的操作,对于inserting.updating中的操作都可以正常实现 ...

  7. oracle 自治事物,自治事务 - 努力创造未来! - BlogJava

    自治事务前的事务管理(一般事务管理) 像 DML 这样的数据库扣作都是在事务的上下文环境中执行的.事务是一个或多个 SQL 语句的序列,执行一定的工作逻辑单元.事务.定义的特定会话可以由 commit ...

  8. PostgreSQL Oracle兼容性之 - plpgsql 自治事务(autonomous_transaction)补丁

    PostgreSQL Oracle兼容性之 - plpgsql 自治事务(autonomous_transaction)补丁 作者 digoal 日期 2016-11-04 标签 PostgreSQL ...

  9. oracle:触发器,自治事务,instead of trigger,trigger

    触发器的格式: CREATE [OR REPLACE ] TRIGGER trigger_name {BEFORE| AFTER} {UPDATE| INSERT| DELETE|SELECT} ON ...

最新文章

  1. 美国地铁列车相撞可能由设备陈旧引发(组图)
  2. VMware CTO:未来VMware NSX与思科ACI将有更多整合
  3. java框架知识_java框架知识点总结
  4. python爬虫能赚钱吗-在校大学生用python当爬虫一个月能赚3000吗?
  5. 子窗口关闭,父窗口有选择刷新
  6. 华科计算机网络报告,华科-计算机网络实验报告-Java Socket编程-网络组建实验
  7. hive多个表join_8个Hive数据仓工具面试题锦集!
  8. sql建表语句(含:序列、主键)
  9. ubuntu 20.04gitlab-runner docker方式安装使用
  10. idea常用的搜索方式
  11. Visual C++ 2015 Redistributable安装失败,错误代码0x80240017?
  12. 01背包问题 动态规划求解方法 动态方程的详细解释 能理解的解释(附python代码)
  13. intel编译器免费下载
  14. 使用阿里云IoT实现远程windows远程桌面
  15. 彻底删除Android Studio
  16. 原型与原型链的学习理解
  17. 预览pdf 印章不显示问题
  18. 贝塞尔曲线工具css,贝塞尔曲线以及css动画 | Soo Smart!
  19. 做3D建模月薪平均多少?
  20. 基于Java毕业设计信管专业毕业生就业管理信息系统源码+系统+mysql+lw文档+部署软件

热门文章

  1. C# pdf 转图片 and 创建百度AI文字识别应用(识别图片中的文字和数字)
  2. Linux下安装和卸载jdk及环境配置
  3. 背景图片铺不满全屏时处理
  4. 数学一年级应用题_【专项练习】一年级下册数学100以内加减法应用题专项练习,附答案...
  5. NYOJ455 - 黑色帽子
  6. mysql5.6.19安装图解_mysql5.6.19安装说明
  7. oracle em登陆失败,oracle的em登陆失败解决办法
  8. linux下运行class,在Linux下可用Wine安装和运行AIclass、希沃白板5
  9. 试题2 入门训练 圆的面积
  10. HDU 5942 2016CCPC杭州 J: Just a Math Problem(莫比乌斯函数)