oracle存储过程自治事务-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

oracle存储过程自治事务

简介:        pb调用存储过程的时候,使用了事务,为了存储过程的逻辑功能完整,往往在存储过程中也会使用事务。

       pb调用存储过程的时候,使用了事务,为了存储过程的逻辑功能完整,往往在存储过程中也会使用事务。如何保证存储过程内外的事务合理使用显得尤为重要。pb调用存储过程的事务,我们称其为主事务。他与存储过程内的事务关系,无非就两种情况。两个事务是同一个事务或者两个事务是独立的两个事务。

       oracle提供了参数PRAGMA AUTONOMOUS_TRANSACTION用于标示存储过程内的事务为自治事务,实例如下:

create or replace procedure p_a( as_return out number) as
PRAGMA AUTONOMOUS_TRANSACTION;
begin
   savepoint point;
   begin
  insert into a values(8);
  Exception
    when others then
      begin
      rollback to savepoint point;
       as_return := -1;
       return;
      end;
      end ;
      commit;
  select count(*) into as_return from a where a =7;
end p_a;


       oracle存储过程要不要使用自治事务,要根据应用环境而定。如果使用自治事务,commit或rollback不影响主事务。但是无法获取主transaction中未commit的数据。如果不使用自治事务,可以获取主事务中未commit的数据,但是commit或者rollback也会影响主事务。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章
最新文章
相关文章