预定异常

  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中的预定异常和自定义异常的更多相关文章

  1. oracle有三种类型的异常错误: 预定义 ( Predefined )错误里面的常见错误

    oracle有三种类型的异常错误: 预定义 ( Predefined )错误, 非预定义 ( Predefined )错误, 用户定义(User_define) 错误 预定义 ( Predefined ...

  2. Oracle中RAISE异常

    转: Oracle中RAISE异常 由三种方式抛出异常 1. 通过PL/SQL运行时引擎 2. 使用RAISE语句 3. 调用RAISE_APPLICATION_ERROR存储过程 当数据库或PL/S ...

  3. springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。为了区别不同的异常通常根据异常类型自定义异常类,这里我们创建一个自定义系统异常,如果controller、service、dao抛出此类异常说明是系统预期处理的异常信息。

    springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑. 1.1 异常处理思路 系统中异常包括两类:预期异常和运行时异常RuntimeEx ...

  4. Oracle知识分类之异常

    Oracle异常分类                                                                                           ...

  5. Oracle中PL/SQL的执行部分和各种流程控制

    Oracle中PL/SQL的执行部分和异常部分 一.PL/SQL的执行部分. 赋值语句. 赋值语句分两种,一种是定义一个变量,然后接收用户的IO赋值:另一种是通过SQL查询结果赋值. 用户赋值举例: ...

  6. oracle中游标详细用法

    转自:http://blog.csdn.net/liyong199012/article/details/8948952 游标的概念:     游标是SQL的一个内存工作区,由系统或用户以变量的形式定 ...

  7. oracle中的cursor

    游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来 ...

  8. Oracle中的EXCEPTION

    Oracle系统预定义的异常 比如:SELF_IS_NULL.VALUE_ERROR.ZERO_DIVIDE等Oracle中自带的异常类型 使用方法: DECLARE V_Result ); BEGI ...

  9. Oracle中特殊的变量类型

    1.%TYPE 允许用户动态地将数据库中某一列的数据类型与PL/SQL中某个变量关联.语法如下: variable_name table.column%TYPE   2.%ROWTYPE 允许用户定义 ...

随机推荐

  1. jQuery Validate使用说明

    jQuery Validate 导入 js 库 <script src="./jquery-validation/lib/jquery-1.8.3.js" type=&quo ...

  2. 11.C#中的转义符和@符号的作用

    转义符 转义符是指一个'\'+一个特殊的字符,组成的一个具有特殊意义的字符. \n:  表示换行. namespace _11.转义符 { class Program { static void Ma ...

  3. iOS 系统框架结构图

  4. Android 编码风格规范,很赞哦

    1. 前言 这份文档参考了 Google Java 编程风格规范和 Google 官方 Android 编码风格规范.该文档仅供参考,只要形成一个统一的风格,见量知其意就可. 1.1 术语说明 在本文 ...

  5. Windows下hosts文件的作用

    原文地址:https://my.oschina.net/u/874225/blog/194348 在操作系统中的路径:Win7在C:\Windows\System32\drivers\etc目录下 内 ...

  6. VOS落地网关前缀优先级

    问题描述: 假如:A客户业务方向:酒水B客户业务方向:增值酒水业务网关前缀:9150增值业务网关前缀:660 公司原来落地全跑酒水量9150前缀,但B客户加入后公司又不想添加新的落地网关,计划在原来网 ...

  7. jQuery-prepend、append、before、after的区别

    举例说明,原始html代码如下: <ol> <li>List item 1</li> <li>List item 2</li> <li ...

  8. 笨办法学Python(二十七)

    习题 27: 记住逻辑关系 到此为止你已经学会了读写文件,命令行处理,以及很多 Python 数学运算功能.今天,你将要开始学习逻辑了.你要学习的不是研究院里的高深逻辑理论,只是程序员每天都用到的让程 ...

  9. 修改hosts工具推荐SwitchHosts

    推荐一个修改hosts的工具.适合平时工作中经常修改hosts的开发测试. 下载地址:https://oldj.github.io/SwitchHosts/ 可以按各种环境或者项目添加,用的时候打开或 ...

  10. php5.3 yum安装升级版本到 php5.6

    centOS系统下如何将php升级到5.6,之前通过yum来安装lamp环境,直接升级的话,提示没有更新包,也就是说默认情况下php5.3.3是最新   1.查看已经安装的php版本号 键入下面代码: ...