ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Oracle - 自治事务autonomous transaction

2019-08-30 13:04:41  阅读:289  来源: 互联网

标签:事务 transaction Run Logs err 自治 Pro Oracle autonomous


自治事务 - autonomous transaction

在Oracle数据库中,有时候我们会希望记录一个过程或者函数的运行日志,不管正常运行结束还是触发异常结束,都要记录。

正常结束的没有问题,但是触发异常的情况下,一般的过程或者函数显然不能在插入运行日志之后直接Commit,因为触发异常后相关业务逻辑需要RollBack。

而自治事务就能够很好的避免了这样的问题,就是说自治事务是在某个会话中独立开启一个事务,在其中处理的操作不会影响到同一会话中其他事务未提交的内容。

 

下面开始举个例子说明一下:

 1 --Run_Logs; //运行日志表,包含栏位dates, logs
 2 
 3 --自治事务存储过程
 4 CREATE OR REPLACE PROCEDURE Pro_Run_Logs(Error_Info In Varchar2)
 5  Is PRAGMA AUTONOMOUS_TRANSACTION;
 6 BEGIN
 7  Insert Into Run_Logs(Dates, Logs) Values (Sysdate, Error_Info);
 8  COMMIT;
 9 END;
10 
11 --一般业务逻辑存储过程
12 CREATE OR REPLACE PROCEDURE Pro_Test(v_oldcustname in varchar2,v_newcustname in varchar2) is
13 i number;
14 errorException exception; --申明异常 
15 str_err varchar2(100);
16 user_err exception;
17 begin
18 --业务逻辑
19 
20 Commit;
21 exception
22     When errorException Then
23          Pro_Run_Logs(str_err);
24     WHEN user_err THEN
25         raise_application_error(-20007, str_err);
26         RAISE;
27 end;

 

标签:事务,transaction,Run,Logs,err,自治,Pro,Oracle,autonomous
来源: https://www.cnblogs.com/jeremywucnblog/p/11434415.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有