oracle存储过程捕捉异常后回滚_Oracle存储过程中异常处理应注意的问题
如果主存储过程和主函数又由子过程或子函数构成,在子函数或子程序中能否包含异常处理
要依据以下原则:
第一、如果主程序和子程序要作为一个事务来处理,则在子程序中不能触发异常,异常要到主调程序中取处理,如果在子程序中进行异常处理,如果子程序出现异常,进行异常处理后,还会继续执行主调程序中调用的出现异常的子程序的下面的代码,这样又开始了新的事务,这样破坏了事务的一致性,从而破坏了数据的一致性
主调程序如下:
procedure sp_procedure
is
vs_pay_year_month varchar2(6);
vs_sql varchar2(10000);
begin
sp_procedure1;
sp_procedure2;
update emp set empname='张三' where empid='00001'
exception
WHEN OTHERS THEN
--发生异常,把禁止的触发器设为有效
vs_sql:='alter table sal_t_mainper enable all triggers';
execute immediate vs_sql;
end;
子程序:
procedure sp_procedure1
is
begin
update department set dept_name='人事部' where deptid='0001'
delete from department where deptid='0002'
exception
WHEN OTHERS THEN
--发生异常,把禁止的触发器设为有效
raise_application_error(-20001, '删除发生错误!');
end;
所以,在子程序中不允许处理异常,这样就会破坏数据的一致性
第二、如果主程序和子程序不作为一个事务来处理,则在子程序中可以触发异常,但这种情况很少。
oracle存储过程捕捉异常后回滚_Oracle存储过程中异常处理应注意的问题相关推荐
- springboot 事务手动回滚_Spring Boot中的事务是如何实现的
1. 概述 一直在用SpringBoot中的@Transactional来做事务管理,但是很少想过SpringBoot是如何实现事务管理的,今天从源码入手,看看@Transactional是如何实现事 ...
- zzw原创_oracle循环中的异常捕捉_捕捉异常后并继续循环
zzw原创_oracle循环中的异常捕捉_捕捉异常后并继续循环 参考文章: (1)zzw原创_oracle循环中的异常捕捉_捕捉异常后并继续循环 (2)https://www.cnblogs.com/ ...
- java 回滚异常_Spring事务管理只对出现运行期异常进行回滚
Spring的事务管理默认只对出现运行期异常(java.lang.RuntimeException及其子类)进行回滚. 如果一个方法抛出Exception或者Checked异常,Spring事务管理默 ...
- oracle+ddl+执行很慢,Oracle的DDL语句不能回滚(直接提交)
在Oracle中,Oracle执行DDL前会发出一个COMMIT语句,然后执行DDL操作,最后再发出一个COMMIT操作. 附: DDL(data definition language):creat ...
- 哪些异常是RuntimeException?Sql异常属于RuntimeException吗?Spring下SQL异常事务回滚
哪些异常是RuntimeException?Sql异常属于RuntimeException吗?Spring下SQL异常事务回滚 参考文章: (1)哪些异常是RuntimeException?Sql异常 ...
- 0046 @Transactional注解的几个参数--事务传播控制--事务隔离级别--异常与回滚
0046 @Transactional注解的几个参数--事务传播控制--事务隔离级别--异常与回滚 参考文章: (1)0046 @Transactional注解的几个参数--事务传播控制--事务隔离级 ...
- @Transactional注解的几个参数--事务传播控制--事务隔离级别--异常与回滚
@Transactianal注解有一些属性,见Spring-Framework-Reference Table17.3 Transactional-settings @Transactional(pr ...
- 事务执行sql脚本,错误后回滚
1.手动commit,rollback -- 开启事务 START TRANSACTION; -- 关闭自动提交 SET autocommit = 0;-- 要执行的sql INSERT INTO ` ...
- 冯柯《我的ORACLE笔记二:关于回滚段》接力来袭!
感谢大家对此文的关注!我们的活动还在继续中~您对文章内容有任何疑问时,欢迎您点击原文链接,填写阅读反馈表.我们不仅会邀请作者来回答问题,还会从中抽取一位粉丝赠送精美礼品一份哦~ <我的ORACL ...
最新文章
- 世界机器人领域12个前沿技术趋势
- sharepoint 2007 网站操作 显示菜单不全
- python套接字socket的作用_【学习笔记】python实现的套接字socket
- easyui js拼接html,class属性失效的问题
- Spring boot的Spring MVC自动配置
- 安卓笔记之配置第一个程序
- 你人脉网中应该有的10种人
- 如何给小白解释什么是编解码器
- FCOS 基于FPN之上的完全Anchor Free检测框架
- 有趣的灵魂,从高质量的阅读开始
- SpringMVC实战(注解)
- gm怎么刷东西 rust_RUST:2020年7月第三周 修补和更新
- mysql dba命令_mysql DBA:mysqladmin常用命令总结
- 使用.net开发手机管理软件(一至三)
- 开发里程碑计划_如何通过里程碑控制项目进度
- Android运行时修改Manifest,Android如何动态修改Manifest文件
- Java selenium 设置代理
- 教师资格证综合素质作文素材
- samtools提取指定位置核酸或氨基酸序列
- hdu4565 so easy 矩阵
热门文章
- qmenu基本用法_使用QProxyStyle定制QMenu (二)
- 使用Docker搭建LAMP环境,上线wordpress
- retrofit与rxjava使用
- 基于JAVA+SpringMVC+Mybatis+MYSQL的医院HR人事管理系统
- java io flush_《文件传输基础——Java IO流》,对其中flush方法的思考
- RAID 6 vs. RAID 10
- python接口测试之新手篇
- Spring 依赖注入(一、注入方式)
- 一个用js写的接口http调试程序
- Linux进程间通信[转]