Oracle提供的自治事务记录日志的方法
平时在存储过程或者触发器中,想对过程中出现的异常进行记录,但是又存在一个问题,就是异常的时候,之前的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提供的自治事务记录日志的方法相关推荐
- 关于Oracle AUTONOMOUS TRANSACTION(自治事务)的介绍
AUTONOMOUS TRANSACTION(自治事务)的介绍 在基于低版本的ORACLE做一些项目的过程中,有时会遇到一些头疼的问题,比如想在执行当前一个由多个DML组成的transaction(事 ...
- ORACLE中的自治事务
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 这是一个 ...
- oracle触发器的自治事务
1.插入数据,名次依次+1 今天有朋友提问说 ,oracle数据库怎么实现这个功能: 有一个排名表,插入一条数据排名为1的数据,之前表里数据1变成2,2,变成3类推.插入2,之前表里2变3,3变4类推 ...
- Oracle自治事务
本文章来自http://hi.baidu.com/sqlercn/item/10f170c96fbbfad7964452b8 Oracle自治事务介绍 在正常情况下一但发出commit或是rollba ...
- oracle自治事务的写法_Oracle的自治事务
自治事务(autonomous transaction)允许你创建一个"事务中的事务",它能独立于其父事务提交或回滚.利用自治事务,可以挂起当前执行的事务,开始一个新事务,完成一些 ...
- Oracle之自治事务
昨天处理项目中的一个业务需求要用到触发器实现,触发器中涉及到在inserting.deleting.updating之后来触发对表的操作,对于inserting.updating中的操作都可以正常实现 ...
- oracle 自治事物,自治事务 - 努力创造未来! - BlogJava
自治事务前的事务管理(一般事务管理) 像 DML 这样的数据库扣作都是在事务的上下文环境中执行的.事务是一个或多个 SQL 语句的序列,执行一定的工作逻辑单元.事务.定义的特定会话可以由 commit ...
- PostgreSQL Oracle兼容性之 - plpgsql 自治事务(autonomous_transaction)补丁
PostgreSQL Oracle兼容性之 - plpgsql 自治事务(autonomous_transaction)补丁 作者 digoal 日期 2016-11-04 标签 PostgreSQL ...
- oracle:触发器,自治事务,instead of trigger,trigger
触发器的格式: CREATE [OR REPLACE ] TRIGGER trigger_name {BEFORE| AFTER} {UPDATE| INSERT| DELETE|SELECT} ON ...
最新文章
- 美国地铁列车相撞可能由设备陈旧引发(组图)
- VMware CTO:未来VMware NSX与思科ACI将有更多整合
- java框架知识_java框架知识点总结
- python爬虫能赚钱吗-在校大学生用python当爬虫一个月能赚3000吗?
- 子窗口关闭,父窗口有选择刷新
- 华科计算机网络报告,华科-计算机网络实验报告-Java Socket编程-网络组建实验
- hive多个表join_8个Hive数据仓工具面试题锦集!
- sql建表语句(含:序列、主键)
- ubuntu 20.04gitlab-runner docker方式安装使用
- idea常用的搜索方式
- Visual C++ 2015 Redistributable安装失败,错误代码0x80240017?
- 01背包问题 动态规划求解方法 动态方程的详细解释 能理解的解释(附python代码)
- intel编译器免费下载
- 使用阿里云IoT实现远程windows远程桌面
- 彻底删除Android Studio
- 原型与原型链的学习理解
- 预览pdf 印章不显示问题
- 贝塞尔曲线工具css,贝塞尔曲线以及css动画 | Soo Smart!
- 做3D建模月薪平均多少?
- 基于Java毕业设计信管专业毕业生就业管理信息系统源码+系统+mysql+lw文档+部署软件
热门文章
- C# pdf 转图片 and 创建百度AI文字识别应用(识别图片中的文字和数字)
- Linux下安装和卸载jdk及环境配置
- 背景图片铺不满全屏时处理
- 数学一年级应用题_【专项练习】一年级下册数学100以内加减法应用题专项练习,附答案...
- NYOJ455 - 黑色帽子
- mysql5.6.19安装图解_mysql5.6.19安装说明
- oracle em登陆失败,oracle的em登陆失败解决办法
- linux下运行class,在Linux下可用Wine安装和运行AIclass、希沃白板5
- 试题2 入门训练 圆的面积
- HDU 5942 2016CCPC杭州 J: Just a Math Problem(莫比乌斯函数)