0

0

Oracle存储过程中的commit 和 savepoint

php中文网

php中文网

发布时间:2016-06-07 16:59:20

|

1949人浏览过

|

来源于php中文网

原创

$$LANGUAGE plpgsql;不支持存储过程,只支持function,在function之中,不支持rollback ,commit, savepointQuestion 1: does pg/

Oracle 11g

CREATE OR REPLACE PROCEDURE skeleton 
IS
BEGIN
  begin
       insert into a values(10);
       begin
         insert into a values(11);
       end;
  end;
  begin
    --savepoint ps;
    insert into a values(20);
    commit;
  end;
 
  begin
    insert into a values(30);
  end;
  insert into a values(40);
  --commit;
  rollback;
  --rollback to ps;
END;

在oracle 中,begin end 只起标记作用,commit会把前面没提交的全部提交,不管begin ,end所在的层次,而且提交后,后面的rollback 也无法回滚,

savepoint  和 rollback 可以在不同的begin end 中,而且一但commit之后,savepoint将失效。

exec skeleton();

在postgresql 9.0中

CREATE OR REPLACE function skeleton() RETURNS VOID AS
$$
BEGIN
  insert into a values(0);
  begin
    --savepoint ps;
    insert into a values(1);
    --commit;
  end;
 
  begin
    insert into a values(2);
  end;
  insert into a values(3);
  --commit;
  --rollback to ps;
  --ROLLBACK;
END;
EXCEPTION WHEN unique_violation THEN

$$LANGUAGE plpgsql;

不支持存储过程,只支持function,

在function之中,不支持rollback ,commit, savepoint

Question 1:  does pg/psql functions allow "SAVEPOINT/ROLLBACK" functionality? (if so how?)

MyBatis3.2.3帮助文档 中文CHM版
MyBatis3.2.3帮助文档 中文CHM版

MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plan Old Java Objects,普通的 Java 对象)映射成数据库中的记录。有需要的朋友可以下载看看

下载

Yes.  However, you cannot use that syntax directly.  You rather use it by establishing EXCEPTION clauses in BEGIN/END blocks.  Upon entering any BEGIN/END block which has an EXCEPTION clause, an implicit SAVEPOINT

is executed.  If any exception (read: error) is found while executing the block, the savepoint will be automatically rolled back and control passed to the EXCEPTION block.

It is important not to confuse the use of BEGIN/END for grouping statements in PL/pgSQL with the database commands for transaction control. PL/pgSQL's BEGIN/END are only for grouping; they do not start or end a transaction. Functions and trigger procedures are always executed within a transaction established by an outer query — they cannot start or commit that transaction, since there would be no context for them to execute in. However, a block containing an EXCEPTION clause effectively forms a subtransaction that can be rolled back without affecting the outer transaction.

mysql

DELIMITER $$

DROP PROCEDURE IF EXISTS `a`.`skeleton` $$
CREATE PROCEDURE `a`.`skeleton` ()
BEGIN
 begin
       insert into a values(10);
       begin
         insert into a values(11);
       end;
      -- rollback;
  end;

  begin
    insert into a values(20);
    -- commit;
  end;

  START TRANSACTION;
  -- savepoint ps1;
  begin
    insert into a values(30);
  end;
  -- rollback to savepoint ps1;

  insert into a values(40);
  -- commit;
  rollback;

END $$
DELIMITER ;

linux

相关专题

更多
Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

2

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

2

2025.12.24

AppleID格式
AppleID格式

本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

0

2025.12.24

csgo视频观看入口合集
csgo视频观看入口合集

本专题整合了csgo观看入口合集,阅读下面的文章了知道更多入口地址。

29

2025.12.24

yandex外贸入口合集
yandex外贸入口合集

本专题汇总了yandex外贸入口地址,阅读下面的文章了解更多内容。

58

2025.12.24

添加脚注通用方法
添加脚注通用方法

本专题整合了添加脚注方法合集,阅读专题下面的文章了解更多内容。

1

2025.12.24

重启电脑教程汇总
重启电脑教程汇总

本专题整合了重启电脑操作教程,阅读下面的文章了解更多详细教程。

3

2025.12.24

纸张尺寸汇总
纸张尺寸汇总

本专题整合了纸张尺寸相关内容,阅读专题下面的文章了解更多内容。

5

2025.12.24

Java Spring Boot 微服务实战
Java Spring Boot 微服务实战

本专题深入讲解 Java Spring Boot 在微服务架构中的应用,内容涵盖服务注册与发现、REST API开发、配置中心、负载均衡、熔断与限流、日志与监控。通过实际项目案例(如电商订单系统),帮助开发者掌握 从单体应用迁移到高可用微服务系统的完整流程与实战能力。

1

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 0.6万人学习

Node.js 教程
Node.js 教程

共57课时 | 7.2万人学习

CSS3 教程
CSS3 教程

共18课时 | 3.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号