如果有一些异常并没有异常名称,比如一些ORA-开头的异常并没有一个友好的预定义的异常定义,此时在WHEN子句中无法使用具体的异常名称,必须要使用OTHERS异常处理器进行捕捉。通过EXCEPTION_INIT编译指示,可以为这些不在预定义异常范围内的异常添加名称。

编译指示是指能在编译期而非运行时进行处理的编译指令。

编译指令EXCEPTION_INIT将告诉编译器,将异常名称和错误编号关联起来,使得在PL/SQL语句块中可以使用名称来引用所有的内部异常,为其在EXCEPTION语句块中编写特定的处理程序。 
基本语法如下:

PRAGMA EXCEPTION_INIT (exception_name, oracle_error_number);

PRAGMA是编译指令的声明,表示EXCEPTION_INIT编译指令将在编译时被处理而不是运行时,通常也称为伪指令。

看一个例子:

DECLARE
e_missingnull EXCEPTION; -- 先声明一个异常
PRAGMA EXCEPTION_INIT (e_missingnull, -); -- 将该异常与-1400进行关联
BEGIN
INSERT INTO emp(empno) VALUES (NULL); -- 向emp表中不为空的列插入NULL值
COMMIT;
EXCEPTION
WHEN e_missingnull THEN
DBMS_OUTPUT.put_line(SQLERRM);
ROLLBACK;
END;
 

最终会产生如下 输出:

ORA-01400:无法将NULL插入("APPS"."EMP"."EMPNO")

转载:
https://blog.csdn.net/lianjiww/article/details/77074083

Oracle PL/SQL开发基础(第三十三弹:EXCEPTION_INIT)的更多相关文章

  1. Oracle PL/SQL开发基础(第三十四弹:RAISE_APPLICATION_ERROR)

    RAISE_APPLICATION_ERROR在子程序内部使用时,能从存储子程序中抛出自定义的错误消息.这样就能将错误报告给应用程序而避免范围未捕获异常. 语法如下: RAISE_APPLICATIO ...

  2. oracle PL/SQL语法基础

    目录 数据类型 定义变量 PL/SQL控制结构 参考资料 Oracle10g数据类型总结 PL/SQL之基础篇 数据类型 学习总结 字符类型 char.nchar.varchar.nvarchar:有 ...

  3. Oracle Pl/SQL编程基础

    Pl/SQL简介 提高应用程序的运行性能, 提供模块化的程序设计, 自定义标示符, 具有过程语言控制结构, 良好的兼容性, 处理运行错误. Pl/SQL语言基础 sql是关系数据库的基本操作语言. s ...

  4. PL/SQL编程基础(三):数据类型划分

    数据类型划分 在Oracle之中所提供的数据类型,一共分为四类: 标量类型(SCALAR,或称基本数据类型) 用于保存单个值,例如:字符串.数字.日期.布尔: 标量类型只是作为单一类型的数据存在,有的 ...

  5. Oracle PL/SQL语句基础学习笔记(上)

    PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE server和其它工具中了,近几年中很多其它的开发者和DBA開始使用PL/SQL,本文将讲述PL ...

  6. oracle PL/SQL编程基础知识

    在oracle中使用pl/sql来扩展SQL的功能,使得SQL能够更加的灵活,功能更加强大,效率更高.pl/sql让sql也能执行判断,循环等操作.主要记录一下pl/sql的基本语法和基本条件判断语句 ...

  7. ORACLE PL/SQL开发--bulk collect的用法 .

    刚刚在inthirties老大的博客里看到这篇文章,写的不错,正好自己最近在学习PL/SQL,转过来学习学习. ============================================ ...

  8. Oracle PL/SQL 编程基础 实例

    create table mytest(name varchar(20),password varchar(30)); create or replace procedure sp_pro2 is  ...

  9. Oracle+PL+SQL从入门到精通.丁士锋.清华大学出版社.2012

    \t第1篇 pl/sql开发入门第1章 oracle 11g数据库系统1.1 关系型数据库系统介绍1.1.1 什么是关系型数据模型1.1.2 数据库系统范式1.1.3 关系型数据库管理系统1.1.4 ...

随机推荐

  1. 关于Linux操作系统层次结构分析

    本文转自http://www.jb51.net/LINUXjishu/214104.html 首先来看一张图(这是Linux操作系统的大致层次结构): 最内层是硬件,最外层是用户常用的应用,比如说fi ...

  2. 5G开启百亿“机器人”时代 安全与标准仍待统一

    5G开启百亿“机器人”时代 安全与标准仍待统一 5G将会给物联网产业带来滚雪球效应,这将是数以百亿计“机器人”之间的网络. 在5G的助推下,物联网应用正在加速落地. 6月12日,CES Asia 20 ...

  3. bzoj 1192: [HNOI2006]鬼谷子的钱袋 思维_二进制

    十分巧妙的一道题. 考虑当前凑出$[1,i/2)$,那么再有一个 $i/2$,就可以凑出 [i/2+1,i). 注意,这里的 $i$ 都是 2 的 $k$ 次幂. 于是,我们只要找到 $i$ 使得 2 ...

  4. 洛谷P1486 [NOI2004]郁闷的出纳员

    Code: #include<cstdio> #include<algorithm> using namespace std; struct Node{ int s,val,t ...

  5. js进度条插件pace.js

    主要用到themes文件夹和pace.js文件

  6. struts2,hibernate等模板配置文件在jar包中的路径,以及所需要的包

    一.struts2 1.struts的配置模板文件struts-default.xml的位置: struts-2.3.16.1 --> src --core --> src --> ...

  7. sklearn学习汇总

    该博主总结的很好,https://www.cnblogs.com/hellcat/p/7531789.html 1.kaggle给出的导图 2.转化成树图: 3.sklearn工具导图

  8. gradle多模块构建集成swagger

    1.首先说一下软件的版本:springboot:1.5.2:springcloud:D-SR1:swaager2:2.6.0:gradle:4.5.工程模块是分开的单独的entity,api,mapp ...

  9. Node-Blog整套前后端学习记录

    Node-Blog 后端使用node写的一个一整套的博客系统 #### 主要功能 登录 注册 发表文章 编辑/删除文章 添加/删除/编辑文章分类 账号的管理 评论功能 ... 所用技术 node ex ...

  10. yii2.0 表单小部件常用的默认选中

    下面自己总结了一下表单小部件中经常使用到的一些默认选中 直接在视图代码里面说明啦 <?php //这个表头就不多说了 use yii\helpers\Html; use yii\widgets\ ...