oracle中的预定异常和自定义异常
预定异常
oracle中的预定异常情况大约有24个,对于这种异常情况的处理,无须再程序中定义,可用oracle自动引发,常见的预定异常如下
| 异常 | 说明 |
| ACCESS_INTO_NULL | 在未初始化对象时出现 |
| CASE_NOT_FOUND | CASE语句中的选项与用户输入的数据不匹配时出现 |
| COLLECTION_IS_NULL | 给尚未初始化的表或数组赋值时出现 |
| CURSOR_ALREADY_OPEN | 在用户试图重新打开已经打开的游标时出现。在重新打开游标前必须先将其关闭 |
| DUP_VAL_ON_INDEX | 在用户试图将重复的值存储在使用唯一索引的数据库列中时出现 |
| INVALID_CURSOR | 在执行非法游标运算( 如打开一个尚未打开的游标)时出现 |
| INVALID_NUMBER | 在将字符串转换为数字时出现 |
| LOGIN_DENTED | 在输入的用户名或密码无效时出现 |
| NO_ DATA_FOUND | 在表中不存在请求的行时出现。此外,当程序引用已经删除的元素时,也会引发NO_ DATA FOUND异常 |
| STORAGE_ERROR | 在内存损坏或PLSQL耗尽内存时出现 |
| TOO_MANY_RowS | 在执行SELECT INTO语句后返回多行时出现 |
| VALUE_ERROR | 在产生大小限制错误时出现,例如, 变量中的列值超出变量的大小 |
| ZERO_ DIVIDE | 以零作为除数时出现 |
处理自定义异常
在程序执行过程中,出现编程人员认为的非正常情况,对于这种情况的处理,需要用户在程序中定义,然后显示的将其在程序中引发
对于这类异常情况的处理,步骤如下
在pl/sql块的定义异常情况
<异常情况> exception;
抛出异常情况
raise <异常情况>
预定异常
--异常
declare
v_comm emp.comm%type;
e_comm_is_null exception; --定义异常类型变量
begin
select comm into v_comm from emp where empno=7788;
if v_comm is null then
raise e_comm_is_null;
end if;
exception
when no_data_found then
dbms_output.put_line('雇员不存在!错误为:'||SQLcode||SQLErrm);
when e_comm_is_null then
dbms_output.put_line('该雇员无补助');
end;
结果:
用户自定义异常
--自定义异常
declare
v_comm emp.comm%type;
begin
select comm into v_comm from emp where empno=7788;
if v_comm is null then
raise_application_error('-20010','该雇员无补助');
end if;
end;
结果:
注意自定义异常的编号范围是 -20999-20000之间的负整数,消息长度最长为2048字节
oracle中的预定异常和自定义异常的更多相关文章
- oracle有三种类型的异常错误: 预定义 ( Predefined )错误里面的常见错误
oracle有三种类型的异常错误: 预定义 ( Predefined )错误, 非预定义 ( Predefined )错误, 用户定义(User_define) 错误 预定义 ( Predefined ...
- Oracle中RAISE异常
转: Oracle中RAISE异常 由三种方式抛出异常 1. 通过PL/SQL运行时引擎 2. 使用RAISE语句 3. 调用RAISE_APPLICATION_ERROR存储过程 当数据库或PL/S ...
- springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。为了区别不同的异常通常根据异常类型自定义异常类,这里我们创建一个自定义系统异常,如果controller、service、dao抛出此类异常说明是系统预期处理的异常信息。
springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑. 1.1 异常处理思路 系统中异常包括两类:预期异常和运行时异常RuntimeEx ...
- Oracle知识分类之异常
Oracle异常分类 ...
- Oracle中PL/SQL的执行部分和各种流程控制
Oracle中PL/SQL的执行部分和异常部分 一.PL/SQL的执行部分. 赋值语句. 赋值语句分两种,一种是定义一个变量,然后接收用户的IO赋值:另一种是通过SQL查询结果赋值. 用户赋值举例: ...
- oracle中游标详细用法
转自:http://blog.csdn.net/liyong199012/article/details/8948952 游标的概念: 游标是SQL的一个内存工作区,由系统或用户以变量的形式定 ...
- oracle中的cursor
游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来 ...
- Oracle中的EXCEPTION
Oracle系统预定义的异常 比如:SELF_IS_NULL.VALUE_ERROR.ZERO_DIVIDE等Oracle中自带的异常类型 使用方法: DECLARE V_Result ); BEGI ...
- Oracle中特殊的变量类型
1.%TYPE 允许用户动态地将数据库中某一列的数据类型与PL/SQL中某个变量关联.语法如下: variable_name table.column%TYPE 2.%ROWTYPE 允许用户定义 ...
随机推荐
- java学习第十五天
1:对象数组(掌握) (1)数组既可以存储基本数据类型,也可以存储引用类型.它存储引用类型的时候的数组就叫对象数组. (2)案例: 用数组存储5个学生对象,并遍历数组. 2:集合(Collection ...
- web相关知识
1,网络编程/网站编程:敲一个网站,别人可以访问 访问:在地址栏里面敲入地址,就可以访问了. 服务器如果放在公网,那么别人就可以通过IP地址进行访问 所以我们可以先在本地把我们的网站搭好,别人就可以来 ...
- Discuz论坛UCenter无法登录问题修复方法完美解决无限刷新问题
级20141225版本后,出现UC无法登录问题[完美]解决方法.自圣诞节发布 Discuz! X3.2 R20141225 小编手头多个站点也都在升级后出现了,后台登录[ UCenter]假死情况, ...
- 在vs2010使用EF出现CS0012: 类型“System.Data.Objects.DataClasses.EntityObject”在未被引用的程序集中定义
网上查了一通都是在web.config中配置 System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c56 ...
- poj 1741 两点距离小于K(树DP)
http://blog.csdn.net/woshi250hua/article/details/7723400 求两点间距离小于等于k的方案数 理一下思路: 求通过点A与另一点连接符合条件的个数 = ...
- SQLServer查询语句收集
常用的SQLServer查询语句,有空可以多练习一下,增加记忆,可以提高工作效率! 1.数据操作 Select --从数据库表中检索数据行和列Insert --向数据库表添加新数据 ...
- Java—多态
多态——对象的多种形态(继承是多态实现的基础) 引用多态:父类的引用可以指向本类的对象:父类的引用可以指向子类的对象 方法多态:创建本类对象时,调用的方法为本类方法:创建子类对象时,调用的方法为子类重 ...
- JavaScript基础:字符串转换函数——String()和toString()
1..toString()可以将所有的的数据都转换为字符串,但是要排除null 和 undefined 例如将false转为字符串类型 <script> var str = false ...
- 去除Windows平台下每行代码的“^m”
有时在Windows里编写好的shell脚本放到Linux里不能运行了,打开编辑器显示正常,结果用vim打开发现每一行末尾都有^m,于是搜了一下解决办法. Windows上写好的文件,在Linux或者 ...
- ubuntu 安装 deb 软件包
参考链接地址 blog.csdn.net/kevinhg/article/details/5934462 sudo dpkg -i xxxx.deb 安装一个 Debian 软件包,如你手动下载的文件