`
regedit_123
  • 浏览: 317585 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

oracle 自主事务

阅读更多

1、测试用例

declare
begin
  INSERT INTO loginuser VALUES('admin','111');
  testcommit.test('admin','123456');
end;

 

2、建表loginuser语句,用来测试用:

CREATE TABLE loginuser (
  username varchar(50),
  password varchar(50)
)

3、建包testcommit和包体testcommit中的过程test:

create or replace package testcommit is

PROCEDURE test(v_name VARCHAR2,
               v_pass VARCHAR2) ;

end testcommit;

 

、、、、、、、、、、、、、、、、、、、、、、

create or replace package body testcommit is

 

PROCEDURE test(v_name VARCHAR2,
                            v_pass  VARCHAR2) AS
    PRAGMA AUTONOMOUS_TRANSACTION; --增加自主事务
  BEGIN
    INSERT INTO loginuser VALUES (v_name,v_pass); 
    COMMIT;--提交事务
  END test;

 

end testcommit;

 

 

4、测试结果:

 

     当运行完毕测试用例时,在未提交事务的情况下,loginuser表里的数据只有admin ---123456---一条记录;

INSERT INTO loginuser VALUES('admin','111'); -------此条记录在未提交事务时,并未插入到loginuser表中
testcommit.test('admin','123456');-----------由于使用自主事务,包体内的存储过程已经提交了事务,而且使用了自主事务,所以在测试用例未提交事务的时候,已经插入到了loginuser表里。


5、对比测试:

 

   当修改包体中的存储过程test,把自主事务注释掉,

---注释掉该行 PRAGMA AUTONOMOUS_TRANSACTION; --自主事务

  再次针对测试用例测试的结果为:

INSERT INTO loginuser VALUES('admin','111');----在未提交事务的情况下,该条记录成功插入到表loginuer

testcommit.test('admin','123456');---成功插入该记录

 

      在数据清洗时为了方便查看当前运行的状态,特意在存储过程里面添加了一些日志。通过查看日志可以方便的看到当前运行到哪里,但是这输出的日志不能跟过程使用相当的事物(即不管清洗过程是成功还是失败,日志必须得成功写到数据库里面)。Oracle的独立事物就能帮助我们解决这个问题。

    

下面是方法模型:

  procedure AddError(i_runid number, --运行号码

  i_append varchar2, --附加信息

  i_type number default 10 --错误等级0-9错误,10-99警告

  ) is

  pragma autonomous_transaction;

  begin

  insert into dw_log_error

  (log_id, log_runid, log_type, log_append)

  values

  (seq_dw_log_errorid.nextval,

  i_runid,

  i_type,

  substr(i_append, 1, 2000));

  commit;

  end;

只需要在过程内容调整该过程即可!问题立马解决!

 

在编写程序中,常常需要有些事务提交了,但是有些事务不提交。
典型的应用就是一个主过程调用一个子过程,而子过程主要用于记录日志信息,不论主过程是否失败,子过程都需要执行。
--------主过程---------------
PROCEDURE MAIN

IS

BEGIN
    .......

    SUB_TRAN;
    .........
 EXCEPTION
  WHEN OTHERS THEN
     ROLLBACK;
  COMMIT;

END MAIN;
-------    END SUB---------
如果要完成前文所描述,则SUB_TRAN必须如以下定义
PROCEDURE SUB_TRAN    
is
  pragma autonomous_transaction;
begin
      .......

      INSERT INTO LOGTABLE()  VALUES();

      COMMIT;

EXCEPTION

分享到:
评论

相关推荐

    oci-arch-oke-atp

    Oracle自主事务处理(ATP)是一种云数据库服务,它消除了操作和保护高性能数据库的复杂性。 该服务自动执行数据库的配置,配置,调整,扩展,修补,加密和修复。 先决条件 有权manage Oracle Cloud Infrastructure...

    Oracle从基础到熟练(太实用了)

    ③:自主事务处理 ④:包规范|包主体 十一.触发器|内置包 ①:触发器类型 ②:触发器原理 ③:new和old 两个行类型变量 ④:递归 ⑤:内置包 十二.导入导出 ①:导入导出/整个DB/表空间/表/用户 十三.其他

    118个真实应用场景的Oracle存储过程案例及开发指南(从入门到熟练使用)

    3、资源分为两类:真实应用场景的存储过程案例61个(真实业务案例,供学习参考)、通用存储过程案例57个(涉及序列、表及列操作、主键唯一索引约束、事务、内存、权限、导出文件、视图、迭代、备份、参数校验等,可...

    Oracle 11g,面向管理员的新增功能

    并行操作、数据仓库优化,多媒体支持,内置消息,支持分区,内置Java虚拟机,虚拟专用数据库,闪回查询,支持集群和MPP,支持分布式SQL和事务处理,平台可移植性,自主管理数据库,安全企业搜索等等;

    国产数据库年终大盘点!.md

    **去“IOE”**这个概念,最早由王坚院士在刚刚加入阿里时提出,其目标是**将IBM 的小型机、Oracle数据库、EMC存储设备从阿里的IT体系中去除,代之以自主研发的系统**。 随着**国产云计算服务水平**的不断发展,**...

    Move_Improve:在ATP上移动改进应用程序

    移动和改进对OCI和ATP的应用该研讨会涵盖了将现有数据库应用程序移至Oracle云和自主事务处理(ATP)的概念。 该课程可以是讲师指导的课程,也可以是自定进度的学习课程。讲师指导的培训对于讲师指导的培训,请单击此...

    睿备份(IBAK)V3.4.1

    跨平台支持本地/远程文件、MSSQL、ORACLE、MySQL、PostgreSQL、达梦等数据库完全、增量、事务日志备份。 类Windows计划任务模式的备份任务设置,可自由组合无限复合式备份任务;支持备份文件ZIP压缩后通过Lan/Ftp/...

    基于VB6开发的轻量级数据库查询客户端工具(附源码和安装)

    基于VB6自主研发的轻量级数据库查询客户端工具,启动速度较快,所占资源较小。 附源码,对初学数据库编程的童鞋有所裨益! 1、支持SQLServer、Oracle、Sybase、DB2数据库平台 2、单句执行:可以提交单一的SQL语句...

    ZCBUS v2.0.1 使用手册

    数据交换平台ZCBUS是本企业自主研发的一款数据融合产品。用户无需编写任何代码,通过可视化图形配置界面,只需几分钟即可自服务式的部署一条实时数据管道(链路),并提供丰富的管理功能:数据计算批流一体、数据...

    睿备份 v4.2.5.zip

    跨平台支持本地/远程/FTP文件、MSSQL、ORACLE、MySQL、PostgreSQL、达梦等数据库完全、增量、事务日志备份与恢复。 只需一机安装,即可管理无限台计算机的数据库/文件备份;类Windows计划任务模式的备份任务设置,...

    办公自动化系统OA-探索软件

    个人事务管理 事务安排 通讯录 工作计划 日程安排 .工作流 1.系统内置四类工作流处理 1.发文 2.收文 3.普通办件 4.月报 5.会议 发文:拟稿、审核、会签、签发、归档、发布 收文:登记、传阅、审批、归挡、发布 ...

    oa办公自动化系统(asp版)

    个人事务管理 事务安排 通讯录 工作计划 日程安排 .工作流 1.系统内置四类工作流处理 1.发文 2.收文 3.普通办件 4.月报 5.会议 发文:拟稿、审核、会签、签发、归档、发布 收文:登记、传阅、审批、归挡、发布 ...

    办公自动化系统OA(jsp java)

    个人事务管理 事务安排 通讯录 工作计划 日程安排 .工作流 1.系统内置四类工作流处理 1.发文 2.收文 3.普通办件 4.月报 5.会议 发文:拟稿、审核、会签、签发、归档、发布 收文:登记、传阅、审批、归挡、发布...

    网络内存数据库

    Cache Server提供了和传统关系数据库管理系统(MS SQL SERVER、Oracle、Sybase、DB2、mysql)的访问接口,可以以同步或异步方式和RDBMS交互。 Cache Server内存数据库为需要容错服务的系统提供实时数据库复制功能...

    Cache Server V1.2.0 嵌入式(实时)内存数据库(linux 32)

    Cache Server嵌入式(实时)内存数据库是具有自主知识产权的企业级内存数据库,是作者多年工作经验的结晶。Cache Server提供详细的中文文档(安装手册、使用手册、开发文档、练习手册、通讯协议等)和服务。 Cache...

    SQLserver数据库管理系统需求分析.doc

    目前,绝大多数流行的关系型数据库管理系统,如Oracle,Sybase,Microsoft SQL Server,Access等都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩 展,但是包括Select,Insert,Update,Delete,Create,...

    SQLserver数据库管理系统需求分析(1).doc

    目前,绝大多数流行的关系型,如Oracle,Sybase,Microsoft SQL Server,Access等都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩 展,但是包括Select,Insert,Update,Delete,Create,以及Drop在内的...

Global site tag (gtag.js) - Google Analytics