Oracle 存储过程5:PL/SQL异常处理
PL/SQL异常处理是PL/SQL块中对执行部分出现异常进行处理的部分。PL/SQL采用的是统一异常处理机制,当异常发生时,程序会自动跳转到异常处理部分,交给异常处理程序进行异常匹配,再调用对应的处理方法。如果程序出现异常,而没有找到对应的异常处理程序,则程序会直接中断抛出异常。PL/SQL异常可以分为预定义异常、非预定义异常、自定义异常三种。
PL/SQL异常处理都在PL/SQL块的最下方,以EXCEPTION开始,其语句结构如下:
语法解析:
1、exception是异常处理部分开始的标志。
2、when后面是跟着异常的名称, then后面是对应异常处理程序。也就是当异常exception1出现时,执行的是异常1处理程序。其它异常程序不会进入。
3、when others then 指的是异常再前面异常捕获中未捕获到对应的异常处理程序,则全部进入其它异常处理程序进行异常处理。
预定义异常
预定义异常Oracle数据库为我们预定义好开发过程当中经常出现的异常名称。Oracle一共提供了25种预定义异常名称,常用到的如我们使用select ...into语句进行赋值时,经常出现的NO_DATA_FOUND(select查询时无数据不能赋值给变量错误)、TOO_MANY_ROWS(查询返回记录不止一条,触发的错误)等。25种预定义异常,可以通过数据库语句查询,命令如下:
结果如下:
案例1、测试预定义异常,代码如下:
非预定义异常
Oracle当中除了上面存在的25种预定义异常,更多存在的是非预定义的异常。也就是说,它们只存在错误编号和对应的错误信息,但是没有具体的错误名称的对应。虽然,Oracle数据库自己预定义了25种常见异常,但是对于其他异常,你可以选择为异常添加一个名称,使得它能够被异常处理模块进行捕获并抛出处理。
定义非预定义异常,可以分为两步走:
1、进行异常声明:声明一个异常名称。
2、进行异常名称和错误编号关联。
Oracle处理非预定义的异常和预定义异常的原理是一致的,非预定义异常只是自己给对应的Oracle错误编号起个自己的名字,而预定义异常是Oracle数据自己起的名字。
案例2、演示非预定义异常的编写,代码如下:
自定义异常
除了,上面的预定义异常外,Oracle还为开发者提供一个异常处理方式,那就是自定义异常,可以根据自己实际的业务需求和逻辑错误进行自定义异常,并通过逻辑控制主动抛出自定义异常交给对应的异常处理模块,进行异常处理。进行自定义异常的步骤如下:
1、异常声明定义:在PL/SQL块的声明部分采用关键字EXCEPTION定义异常名称。
2、异常主动抛出:在PL/SQL块中执行部分,通过逻辑控制,主动使用RAISE关键字抛出异常,交给异常处理模块处理。
案例3、自定义异常演示,代码如下:
Oracle 存储过程5:PL/SQL异常处理的更多相关文章
- Oracle数据库之PL/SQL异常处理
Oracle数据库之PL/SQL异常处理 异常指的是在程序运行过程中发生的异常事件,通常是由硬件问题或者程序设计问题所导致的. PL/SQL程序设计过程中,即使是写得最好的程序也可能会遇到错误或未预料 ...
- 【PL/SQL系列】Oracle存储过程使用动态SQL
Oracle存储过程相信大家都比较了解,下面就为您介绍Oracle存储过程使用动态SQL的方法,希望对您能够有所帮助. CREATE OR REPLACE PROCEDURE P_STAT_SCORE ...
- 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》
本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...
- PL/SQL异常处理方法
PL/SQL异常处理方法 1:什么是异常处理: PL/SQL提供一个功能去处理异常,在PL/SQL块中叫做异常处理,使用异常处理我们能够测试代码和避免异常退出. PL/SQL异常信息包含三个部分: ...
- Oracle数据库之PL/SQL过程与函数
Oracle数据库之PL/SQL过程与函数 PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保存到数据 ...
- Oracle数据库之PL/SQL程序设计简介
PL/SQL程序设计简介 一.什么是PL/SQL? PL/SQL是 Procedure Language & Structured Query Language 的缩写. ORACLE的SQL ...
- oracle数据库之PL/SQL 块结构和组成元素
一.PL/SQL 块 (一)PL/SQL 程序由三个块组成,即声明部分.执行部分.异常处理部分 PL/SQL 块的结构如下: 1.DECLARE /* 声明部分: 在此声明 PL/SQL 用到的变量, ...
- Oracle数据库之PL/SQL触发器
Oracle数据库之PL/SQL触发器 1. 介绍 触发器(trigger)是数据库提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是 ...
- Oracle学习笔记之五,Oracle 11g的PL/SQL入门
1. PL/SQL概述 PL/SQL(Procedural Language/SQL)是Oracle的专用语言,是对标准SQL语言的扩展,它允许在其内部嵌套普通的SQL语句,还可以定义变量和常量,允许 ...
- oracle系列(四)PL/SQL
过程,函数,触发器是PL/SQL编写的,存储在oracle中的.PL/SQL是非常强大的数据库过程语言. PL/SQL优点:性能,模块化,网络传输量,安全性缺点:移植性不好 简单分类:块:过程,函数, ...
随机推荐
- loj2511
引言 思维题. 这个做法跑得飞快,还不用 dp,也不是爆搜! 复杂度(可能)为 \(O(s^2t)\) 或 \(O(s^2)\),实际效率也是飞快. 不过这题我直接提交答案了. 思路 考虑 \(A=m ...
- Socket:由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作
https://blog.csdn.net/weixin_45932157/article/details/113999801 最近服务器的Socket代理软件经常报这个错误:log:Error On ...
- 第一天 python环境变量安装(2.7)
一.什么是python Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计简单,易学,免费,开源,面向对象,可拓展性 Python 是一种解释型语言: ...
- VUE学习-过渡 & 动画
过渡 & 动画 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.包括以下工具: 在 CSS 过渡和动画中自动应用 class 在过渡钩子函数中使用 JavaScrip ...
- QML笔记
文章钢要: 1.qml基础知识 2.qml语言技巧 一.QML basic types QML Language提供的基础类型:int ,bool,string,double,real,var,url ...
- vue3中读取本地excel文件内容
背景 做后台项目时避免不了excel文件上传,有的还要求对文件内容做校验,或者把文件内容转成数据上传保存. 操作 1.引入xlsx插件,最好安装指定版本,否则会报错 npm i xlsx@0.16.0 ...
- A调用B方法,@Transactional事务问题
总结:方法A调用方法B:1.如果只有A加@Transactional注解:则AB在同一事务中,任意异常都回滚:2.如果只有B加@Transactional注解:AB方法为同一类,事务失效任意异常都不回 ...
- 2022-6,flask+vue+uwsgi+nginx,线上部署完整流程打包配置文件
uwsgi配置文件 [uwsgi] # 服务端口号,这里没有设置IP值,默认是加载服务器的IP地址 http = :8000 # flask项目地址 chdir = /home/flask_proje ...
- Tooltip 文字提示,居中显示
Tooltip 文字提示有时候在table中无法居中显示,这个可以设置一下 <a-tooltip placement="top" overlayClassName=" ...
- unixbench测试CPU性能工具
UnixBench是一个类unix系(Unix,BSD,Linux)统下的性能测试工具,一个开源工具,被广泛用与测试linux系统主机的性能.Unixbench的主要测试项目有:系统调用.读写.进程. ...