oracle 存储过程设置回滚点,(转)oracle 存储过程事宜使用断点回滚 -savepoint

学习存储过程中使用断点回滚事务时,发现目前网络上存在一个问题,那就是使用断点回滚后,都忘记了一个很重要的事情,提交事务。虽然使用了断点回滚,但是断点回滚不像rollBack或commit一样结束当前事务,而使用断点回滚只会回滚到声明断点的地方,之前的产生的事务仍需要提交的,如果不提交,事务一直在数据库中缓存.

Demo:

procedure doSomeThing(p_number out number) as

begin

insert into t_test_user_mingming(id,loginname,password,realname,type)

values(se_test_user_mingming_id.nextval,'xiaoming','1234','小明',1);

p_number := 1;

savepoint ps;--- 设置断点 ps

insert into t_test_info_mingming(id,pal,type,create_time,note)

values(se_test_info_id.nextval,'我想买台thinkPad 可以俺莫有钱',1,sysdate,'ceshi');

p_number := 2;

savepoint sp;----设置断点 sp

insert into t_test_agent(agent_id) values(1);---我这里此行会抛出异常 ORA-01400  可以替换为下句 手动抛出一个异常

-----RAISE_APPLICATION_ERROR (-20004,'抛出的异常玩玩');

commit;

exception  --捕获异常

when others then

rollback to ps;  ---- 如果产生异常,回滚到断点 ps

p_number :=0;

commit;  --- 提交事务

end doSomeThing;

这里本人做了实验,如果在异常中不加 commit 语句,使用PL/SQL测试时,异常在缓存,t_test_user_mingming 表中没有数据记录。

存储过程里的事务操作:

112652130.gifcreate or replace procedure pr_mypro2(p_a in varchar2,p_b in varchar2,p_count out number)

112652130.gif

112652131.giftemp varchar2(1000);   /*定义临时变量*/

112652130.gifis

112652130.gifbegin

112652130.gif

112652131.gifselect code into p_count from table1 where a=p_a; /*查询并返回值*/

112652131.giftemp := p_count;  /*将返回值赋给临时变量*/

112652131.gifsavepoint point1;  /*保存点*/

112652130.gif

112652131.gifinsert into table2(a,b)values(temp,p_b); /*将临时变量值添加到新表的字段*/

112652130.gif

112652130.gifsavepoint point2;

112652130.gif

112652130.gifinsert into 

112652132.gif

112652130.gif

112652130.gif

112652130.gif exception   

112652130.gif      when   others   then   

112652131.gif          rollback to savepoint point1;  /*异常处理,保存点下面的操作都不会被执行*/

112652130.gif         return; 

112652130.gif

112652130.gifend;

112652130.gif

保存点(SAVEPOINT)是事务处理过程中的一个标志,与回滚命令(ROLLBACK)结合使用,主要的用途是允许用户将某一段处理回滚而不必回滚整个事务。

如果定义了多个savepoint,当指定回滚到某个savepoint时,那么回滚操作将回滚这个savepoint后面的所有操作(即使后面可能标记了N个savepoint)。

例如,在一段处理中定义了五个savepoint,从第三个savepoint回滚,后面的第四、第五个标记的操作都将被回滚,如果不使用ROLLBACK TO savepoint_name而使用ROLLBACK,将会滚整个事务处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle每季度补丁,Oracle 2020 年第四季度补丁发布

半个月前,也就是 10 月 20 日, Oracle 发布了今年最后一次补丁更新,那么很多人都想打最新的 PSU,理由是有被扫到各种漏洞,有的扫描工具着实太坑,这里就不用说了,前几天看到盖总发布的文章2020年…

路由器 刷 linux系统版本,在Linux下用tftp刷写路由器固件

(以Buffalo WHR-G300N V2路由器为例)以发行版Ubuntu为例(如果你在Windows下,可下载Ubuntu的ISO文件,再用wubi安装Ubuntu,可免去重新分区的麻烦),下载Buffalo WHR-G300N V2路由器的FTP版固件文件,放到Ubuntu的/home目录…

eval函数linux,Python中的eval()、exec()及其相关函数

刚好前些天有人提到eval()与exec()这两个函数,所以就翻了下Python的文档。这里就来简单说一下这两个函数以及与它们相关的几个函数,如globals()、locals()和compile():1. eval函数函数的作用:计算指定表达式的值。也就是说它要执行…

linux更改语言脚本,Linux shell脚本入门——shell语言脚本【CentOS】

认识脚本是使用一种特定的描述性语言,依据一定的格式编写的可执行文件。脚本语言又被称为扩建的语言, 或者动态语言, 是一种编程语言, 用来控制软件应用程序, 脚本通常是以文本 (ASCⅡ) 保存, 只是在被调用时进行解释或者编译。学习shell脚本的用途对于一个合格的系…

linux视图版怎么输入命令,分享在Linux命令下操作MySQL视图实例代码

视图VIEW命令简介:VIEW视图就是存储下来的SELECT语句数据1。创建视图命令格式:创建[或更换][ALGORITHM {UNDEFINED | MERGE | 不是Temptable}][DEFINER {user | 当前用户 }][SQL SECURITY {DEFINER | INVOKER}]VIEW view_name [(column_list)]AS selec…

宝塔linux 做负载均衡,利用BT宝塔面板做网站多服务器负载均衡图文教程

对于我们做网站的来说,如果流量大了,一台服务器肯定是不够的,接下来要考虑很多方面,比如动静分离、比如数据库异步,比如负载均衡等等。因为我们很多新手站长都用的是BT宝塔面板,下面虾皮路就介绍一下利用BT…

血型遗传关系c语言编程,根据血型遗传关系,编程实现:○1.输入

满意答案df4dfw5e562017.05.28采纳率:51% 等级:6已帮助:106人//仅作参考#include "stdio.h"#include "conio.h"#include "stdlib.h"#include "string.h"int studentNum 0;#define MAXSTUDENT (1…

android 通话结束广播,在Android中以编程方式结束通话

侃侃尔雅您无需成为系统应用程序。首先,com.android.internal.telephony在您的项目中创建包,并将其放入名为“ ITelephony.aidl” 的文件中:package com.android.internal.telephony; interface ITelephony { boolean endCall(); vo…

带nfc 的 android 华为,华为手机NFC功能,原来这么好用,不会用真可惜几千块钱了...

华为手机NFC功能,原来这么好用,不会用真可惜几千块钱了2019-05-06 17:40:259点赞12收藏6评论华为手机在国内也是数一数二的了,那么用华为手机的小伙伴,怎么能错过华为手机中NFC的功能呢?下面就随小编一起来了解一下吧。…

小米3升级android 6.0,可升级Android 6.0机型一览 小米手机亮了

前不久,Android M被谷歌正式确定为6.0系统,代号Marshmallow,预计年底前发布。而对于普通用户来说,最关心的就是自己的手机能不能升级。不过别着急,在此之前,我们不妨看看Android 6.0有哪些新功能。一、Andr…

浏览器兼容性怎么设置HTML,ie10浏览器中兼容性设置在哪里

之前ie浏览器一直被诟病的因素之一就是兼容性,不过ie10浏览器可以对兼容性进行设置,使得在兼容性视图中显示所有网站,具体怎么设置呢。下面由学习啦小编为你整理了ie10浏览器兼容性设置在哪里的解决方法,希望对你有帮助!ie10兼容性…

ksu7对讲机调频软件_科普 | 数字对讲机的群呼功能原理是什么?你了解多少?...

点击上方蓝字关注我们!无线对讲机群呼,是为了更好地达到1个数字对讲机能够同一时间跟多个数字对讲机实现语音通话。群呼跟单呼有很多共同之处,下面我们和大家来说说数字对讲机群呼与单呼不同点。当1个数字对讲机处在待机状态的情况下机要发动…

计算机学不学工程制图,大一,马上要考试了,不想再学工程制图了?

买买提烤串累计帮助了195人工科和文科思维方式是不一样的。本人刚好高中理科,大学学文的,而且一专业是中文,二专业管理。大多数工科的特点是靠努力为主的,除了特别难的那种专业,大多数工科的特点是这样的:除…

辅助驾驶等级_双AMR电机位置传感器,助力自动驾驶安全出行

好文章当然要分享啦~如果您喜欢这篇文章,请联系后台添加白名单,欢迎转载哟~在自动驾驶汽车快速发展的今天,汽车电气化趋势逐渐朝着半自动驾驶和全自动驾驶发展,尤其是,为了让电子转向助力(EPS)和电子制动系统满足必要的…

计算机怎么建立共享网络打印机共享,电脑如何连接局域网中的共享打印机—两种方法...

多台电脑而只有一台打印机的时候可以通过连接局域网的方式共享打印机,这样就不需要给每一台电脑都配上打印机了。下面是学习啦小编收集整理的电脑如何连接局域网中的共享打印机—两种方法,希望对大家有帮助~~电脑连接局域网中的共享打印机—两种方法操作…

html5 密码框明文,elementUI的密码框的密文和明文

基于elementui 框架的登录时密码框的明文和密文登录1、templatev-model.trim"ruleForm.password"placeholder"请输入密码":type"passw"clearableblur"onBlur">2、scriptdata(){return{icon: "el-input__icon el-icon-view&quo…

1个显示器分割2画面_我家房子100㎡,原始设计有2个卫生间,纠结保留1个还是2个...

100平米左右的新房装修,设计布局最纠结。尤其是,面积本来就是中等、不大的户型,开发商还给配了2个卫生间。一个主卫,一个客卫。那么问题来了:对于主卧卫生间,我到底是保留还是改成其他的用途?只…

计算机考研数据结构用哪本书,计算机考研数据结构该用哪本参考书?

baoqinshuai新兵答主02-19TA获得超过920个赞一、机械类专业介绍:1、机械设计制造及其自动化机械设计制造及其自动化专业是传统的机械设计制造和先进的自动化技术相结合的产物,是机电一体化的宽口径专业,机械行业是个老行业,人才需…

计算机专业接本应用心理学,专接本接应用心理学但遇到阻挠?

沫沫累计帮助了30人我也是学心理的,学姐你好选专业这件事情,有的放弃自己的意愿,走上了不喜欢的那条路,最后结果对自己来说无论如何都是苦的。有的人跟随了自己的意愿,最后结果不好的 又会埋怨父母当初为什么不加以阻拦…

计算机程序大赛编程,【小学组】海淀区第三届“智慧杯”中小学生计算机程序设计大赛编程思维类初赛...

强密码描述我们称一个密码是强密码,当且仅当它满足以下所有条件:由 8 − 16 个字符组成至少包含一个大写字母 (A-Z)至少包含一个小写字母 (a-z)至少包含一个数字 (0-9)至少包含一个特殊符号 (! # $ % & * _ )娇娇发现她现在的密码好像不是强密码&am…