文档章节

Oracle存储过程 异常处理 继续下次循环

 攻城猿
发布于 12/03 19:50
字数 392
阅读 9
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

1、捕捉异常后继续下一次循环需用

     EXCEPTION
     when others then  null;

    这样的结构。

2、在for ...LOOP   ENDLOOP 循环中捕捉异常,必须用begin   end 包起来,否则会报错。在PLSQL中报

    PLS-00103: Encountered the symbol "EXCEPTION" when expecting one of the following 
    Error: PLS-00103: Encountered the symbol "END" when expecting one of the following

  正确


    FOR E IN TP LOOP
    begin
      ......................
     EXCEPTION
     when others then  null;

   end;

   endloop;

在异常中有时候可能需要回滚数据  和 更新数据状态标识,那么直接使用ROLLBACK 会回滚所有的事务,中间表的数据也不存在,原表数据标识状态位

是原表和中间表联合关联查询,这时就需要设置回滚事务点。

CREATE OR REPLACE PROCEDURE sp_Empi_test20191203
AS
PARM_count int;
begin
begin
 --开始事务
   --SAVEPOINT A;
update GR_JBXX_BAK a set a.SCZT='A' where yljgdm = '320903PDY604999' and grjbxxbsh='320911195205124062' and xgbz='1';
update GR_JBXX_BAK a set a.SCZT='A' where yljgdm = '320903PDY604999' and grjbxxbsh='32091119520125402X' and xgbz='1';

   -SAVEPOINT B;
update GR_JBXX_BAK a set a.SCZT='A' where yljgdm = '320903PDY605027' and grjbxxbsh='320911194601254323' and xgbz='1';
 select 1/0 into PARM_count from dual;

EXCEPTION

	WHEN OTHERS THEN
  begin
       ROLLBACK TO A;
	DBMS_OUTPUT.put_line(SUBSTR(SQLERRM, 1, 4000));
  update GR_JBXX_BAK a set a.SCZT='A' where yljgdm = '320903PDY605027' and grjbxxbsh='32090340002000320175716477961' and xgbz='1';
   commit;
   null;
  end;
 
  
END;

select 1 into PARM_count from dual;
DBMS_OUTPUT.put_line(PARM_count);

end sp_Empi_test20191203;

可以设置回滚到事务节点A    和事务节点B,方便我们使用中间表数据。

 

© 著作权归作者所有

粉丝 0
博文 11
码字总数 14118
作品 0
西安
程序员
私信 提问
Bulk Binds (BULK COLLECT & FORALL) and Record Proc

Bulk Binds (BULK COLLECT & FORALL) and Record Proc 码蜂笔记2017-09-029 阅读 数据库oracle 引言 Oracle 使用两种引擎来处理 PL/SQL 代码。所有存储过程的代码由 PL/SQL 引擎处理,所有的...

码蜂笔记
2017/09/02
0
0
【强烈强烈推荐】《ORACLE PL/SQL编程详解》全原创(共八篇)--系列文章导航

《ORACLE PL/SQL编程详解》 系列文章目录导航 ——通过知识共享树立个人品牌。 本是成书的,但后来做其他事了,就无偿的贡献出来,被读者夸其目前为止最“实在、经典”的写ORACLE PL/SQL编程...

yonghu86
2012/07/30
0
0
Oracle 储存过程

我们在进行pl/sql编程时打交道最多的就是存储过程了。存储过程的结构是非常的简单的,我们在这里除了学习存储过程的基本结构外,还会学习编写存储过程时相关的一些实用的知识。如:游标的处理...

zh151832
2016/02/02
43
0
Oracle-14:PLSQL

------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- PL/SQL PL/SQL(Procedural Language):过程化sql语言! 在原本的sql语句之上,再增加一些逻辑或者循环等操作。 1:基本语法 ...

晨曦dawn
2018/05/22
0
0
oracle package包头和package body包体例子

程序包1作用是为了实程序模块化2程序包里面可以包含存储过程,函数,变量,游标等PL/SQL程序3程序包类似java的jar包,存储过程,函数,变量,游标等相当jar包提供的方法4调用程序包里面的存储...

whshurk
2017/12/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CrashReport

CrashReport.initCrashReport(getApplicationContext(), buglyID, false); https://bugly.qq.com/v2/ https://blog.csdn.net/Crystal_xing/article/details/86249373......

shzwork
16分钟前
2
0
OSChina 周日乱弹 —— 吃这个吮指原味小松鼠

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @这次装个文艺青年吧 :#今日歌曲推荐# 分享Sam Jonsson/Mattafix的单曲《Big City Life (Sam Jonsson Remix)》: 《Big City Life (Sam Jons...

小小编辑
今天
8
0
使用Docker部署第一个Springboot项目

创建springboot项目后pom文件添加 <packaging>jar</packaging> 双击package打包。 双击package即可,最后只要等待控制台输出SUCCESS即可。 我们会在项目中的target文件夹中到自己打包的jar。...

Ryub
今天
7
0
Spring Boot 中使用@DateTimeFormat和@JsonFormat注解

import com.fasterxml.jackson.annotation.JsonFormat;import lombok.Data;import lombok.experimental.Accessors;import org.springframework.format.annotation.DateTimeFormat;......

不再熬夜
昨天
6
0
Qt编写图片及视频TCP/UDP网络传输

一、前言 很多年前就做过类似的项目,无非就是将本地的图片上传到服务器,就这么简单,其实用http的post上传比较简单容易,无需自定义协议,直接设置好二进制数据即可,而采用TCP或者UDP通信...

飞扬青云
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部