pl/sql进阶——例外处理
在pl/sql的执行过程中发生异常时系统所作的处理称为一个例外情况(exception)。通常例外情况的种类有三种;
①预定义的oracle例外情况,oracle预定义的例外情况大约有24个,对于这种例外情况无须再程序中定义,有oracle自动触发。(重点)
②非预定义的oracle例外情况由使用者增加定义例外情况,然后oracle自动将其触发。
③自定义例外,这个用的较少。
|
n 例外传递
如果不处理例外我们看看出出血什么情况:
案例:编写一个过程,可接受雇员的编号,并显示该雇员的姓名。
问题是:如果输入的雇员编号不存在,怎样去处理?
create
or
replace
procedure
pro6(v_in_empno
number)
is
v_ename
varchar2(32);
begin
select
ename into
v_ename from
emp where
empno=v_in_empno;
dbms_output.put_line('姓名是:'||v_ename);
exception
when
no_data_found then
dbms_output.put_line('朋友,你输入的编号不存在');
when
others
then
dbms_output.put_line('不明错误');
end;
n 常用的预定义例外
oracle预定义例外情况的处理,下面列出常见的几个
例外情况明 |
错误代码 |
描述 |
NO_DATA_FOUND |
ORA-01403 |
对于select叙述没有传回任何值 |
TOO_MANY_ROWS |
ORA-01427 |
只允许传回一笔记录的select叙述结果多于一笔 |
INVALID_CURSOR |
ORA-01001 |
使用非法的光标操作 |
VALUE_ERROR |
ORA-06502 |
出现数值、数据形态转换、攫取字符串或强制性的错误。 |
INVALID_NUMBER |
ORA-01722 |
字符串到数值的转换失败。 |
ZERO_DIVIDE |
ORA-01476 |
被零除 |
DUP_VAL_ON_INDEX |
ORA-00001 |
视图向具有唯一键值的索引中插入一个重复值。 |
CASE_NOT_FOUND |
ORA-06592 |
没有case条件匹配 |
CURSOR_NOT_OPEN |
ORA-06511 |
游标没有打开 |
pl/sql进阶——例外处理的更多相关文章
- pl/sql进阶--例外处理
在pl/sql的执行过程中发生异常时系统所作的处理称为一个例外情况(exception).通常例外情况的种类有三种: 1.预定义的oracle例外情况oracle预定义的例外情况大约有24个,对于这种 ...
- pl/sql进阶一控制结构
在任何计算机语言(c,java,c#,c++)都有各种控制语句(条件语句,循环结构,顺序控制结构…),在pl/sql中也存在这样的控制结构. 在本部分学校完毕后,希望大家达到: 1)使用各种if语句 ...
- 二十五、oracle pl/sql进阶--控制结构(分支,循环,控制)
一.pl/sql的进阶--控制结构在任何计算机语言(c,java,pascal)都有各种控制语句(条件语句,循环结构,顺序控制结构...),在pl/sql中也存在这样的控制结构.在本部分学习完成后,希 ...
- Oracle实战笔记(第七天)之PL/SQL进阶
一.控制结构 控制结构包括:判断语句(条件分支语句).循环语句.顺序控制语句三种. 1.条件分支语句 if--then:简单条件判断 --编写一个过程,可以输入一个雇员名,如果该雇员名的工资低于200 ...
- Oracle数据库—— PL/SQL进阶编程
一.涉及内容 1.掌握PL/SQL程序块的结构 2.理解并熟练掌握各种变量的应用. 二.具体操作 1.创建一个表messages,该表只有一个字段results 类型是number(2),编写一个块, ...
- Oracle基础(五)pl/sql进阶(分页过程)
编写分页过程 通过pl/sql实现分页过程,再该过程中由简单到难一步步深入,目的在于通过该案例熟悉pl/sql的各种存储过程,包,游标.怎样在java中调用等内容的学习. 1.无返回值 ...
- Oracle PL/SQL随堂笔记总结
1.pl/sql编程 2.存储过程 3.函数 4.触发器 5.包 6.pl/sql基础 -定义并使用变量 7.pl/sql的进阶 8.oracle的视图 1.pl/sql编程 1.理解oracle的p ...
- pl/sql的介绍
为什么需要pl/sql编程? 因为使用纯的sql语句来操作数据库,有先天性的技术缺陷: 1.不能模块编程: 2.执行速度慢: 3.安全性有问题: 4.浪费带宽. pl/sql是什么? pl/sql(p ...
- Oracle基础(四)pl/sql
PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL). PL/SQL是Oracle数据库对SQL语句的扩展.在普通SQL语句的使用上添加了编程语言的特点 ...
随机推荐
- [洛谷]P1505 [国家集训队]旅游
题目链接: 传送门 题目分析: 树剖板,支持单点修改,区间取反,区间求最大值/最小值/和 区间取反取两次等于没取,维护一个\(rev\ tag\),每次打标记用\(xor\)打,记录是否需要翻转,\( ...
- day66test
作业 1. 先有一下成绩单数据 scores = [ { name: 'Bob', math: 97, chinese: 89, english: 67 }, { name: 'Tom', math: ...
- linux下用eclipse开发mapreduce遇到的问题
Unable to create the selected preference page.org/apache/hadoop/eclipse/preferences/MapReducePrefere ...
- BZOJ2120&&2453 数颜色&&维护队列
2453: 维护队列 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1442 Solved: 678 [Submit][Status][Discuss ...
- [Array]189. Rotate Array
Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array ...
- Django项目:CRM(客户关系管理系统)--39--31PerfectCRM实现King_admin编辑多对多限制
readonly_fields = ('qq', 'consultant','tags',) # 不可修改 # forms.py # ————————19PerfectCRM实现King_admin数 ...
- 原生js增加,移除类名
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JS中的$符号
1. 首先可以用来表示变量, 比如变量 var s='asdsd'或var $s='asdasd'; 2. 在正则表达式中,它可以匹配结尾 /sa$/.test(string) 匹配string字符串 ...
- java-日期类
一 显示系统时间 package cn.itcast.api.a.date; import java.text.DateFormat; import java.util.Date; public cl ...
- java-静态-单例-继承
概要图 一.静态 1.1 静态方法 创建对象就是为了产生实例,并进行数据的封装. 而调用功能时,确没有用到这些对象中封装的数据. 该对象的创建有意义吗?虽然可以编译并运行,但是在堆内存中空间较为浪费. ...