【PL/SQL练习】自定义异常
由用户自己定义
1、定义异常名称,类型exception
2、举出异常(raise excepttion)
3、捕获异常
SQL> declare
2 e_user_err exception;
3 v_deptno dept.deptno%type := &no;
4 begin
5 update dept set loc='HongKong' where deptno=v_deptno;
6
7 if sql%notfound then
8 raise e_user_err;
9 end if;
10 commit;
11 exception
12 when e_user_err then
13 dbms_output.put_line('This department '||v_deptno|| ' is not in dept table ,please input correct number !');
14 end;
非预定义异常,通过oracle ORA-XXXX错误代码,建立异常捕获!
-------违背了参考性约束 declare
e_emp_remain exception;
pragma exception_init( e_emp_remain ,-2292); v_deptno dept.deptno%type :=&no; begin
delete from dept where deptno=v_deptno;
commit;
exception
when e_emp_remain then
dbms_output.put_line ('Don''t remove this '||v_deptno||' department !'||' , This record is in emp !');
when others then
dbms_output.put_line ('Others error !');
end;
SQL> declare
2 e_emp_remain exception;
3 pragma exception_init( e_emp_remain ,-2291);
4
5 v_empno emp.empno%type :=&n;
6 v_deptno emp.deptno%type :=&nn;
7
8 begin
9 update emp set deptno=v_deptno where empno=v_empno;
10 commit;
11 exception
12 when e_emp_remain then
13 dbms_output.put_line ('Department is not exists !');
14 when others then
15 dbms_output.put_line ('Others error !');
16 end;
获取others中错误代码和错误信息:
sqlcode: oracle 错误代码 sqlerrm: oracle 错误信息
SQL> declare
2 v_code errors.code%type;
3 v_msg errors.msg%type;
4 v_sal emp.sal%type;
5
6 begin
7
8 select sal into v_sal from emp where deptno=&no;
9
10 exception
11 when no_data_found then
12 dbms_output.put_line('No this department ID');
13 when others then
14 dbms_output.put_line('Others error ');
15 v_code := sqlcode;
16 v_msg := sqlerrm;
17 dbms_output.put_line(v_msg);
18
19 insert into errors values(v_code,v_msg);
20 commit;
21 end;
通过捕获的代码建立非预定义异常:
SQL> declare
2 e_emp_err exception;
3 pragma exception_init( e_emp_err ,-1422);
4
5 v_sal emp.sal%type;
6
7 begin
8 select sal into v_sal from emp where deptno=&no;
9 commit;
10 exception
11 when e_emp_err then
12 dbms_output.put_line (' Return rows more than one row !');
13 when others then
14 dbms_output.put_line ('Others error !');
15 end;
【PL/SQL练习】自定义异常的更多相关文章
- PL\SQL结构控制、异常
PL\SQL结构控制 1.IF条件控制语句(三种基本方式+IF语句的嵌套使用) (1)IF... (2)IF...ELSE (3)IF...ELSIF. ...
- Oracle学习笔记十 使用PL/SQL
PL/SQL 简介 PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言,是对 SQL 的扩展,它支持多种数据类型,如大对象和集合类型,可使用 ...
- 【Java EE 学习 29 上】【PL/SQL】【存储过程】【存储函数】【触发器】
一.PL/SQL简介 1.概念:PL/SQL语言是Oracle数据库专用的一种高级程序设计语言,是对标准SQL语言进行了过程化扩展的语言. 2.功能:既能够实现对数据库的操作,也能够通过过程化语言中的 ...
- Oracle中PL/SQL的执行部分和各种流程控制
Oracle中PL/SQL的执行部分和异常部分 一.PL/SQL的执行部分. 赋值语句. 赋值语句分两种,一种是定义一个变量,然后接收用户的IO赋值:另一种是通过SQL查询结果赋值. 用户赋值举例: ...
- Oracle PL/SQL
PL/SQL 简介 PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言,是对 SQL 的扩展,它支持多种数据类型,如大对象和集合类型,可使用 ...
- PL/SQL异常处理
As we all known,程序的错误一般分为两类:编译错误和运行时错误.其中运行时错误被称为异常.PL/SQL语句块中处理异常的部分即为异常处理部分.在异常处理部分,可以指定当特定异常发生时所采 ...
- PL/SQL异常处理方法
PL/SQL异常处理方法 1:什么是异常处理: PL/SQL提供一个功能去处理异常,在PL/SQL块中叫做异常处理,使用异常处理我们能够测试代码和避免异常退出. PL/SQL异常信息包含三个部分: ...
- [Oracle] PL/SQL学习笔记
-- 1. 使用一个变量 declare -- Local variables here v_name ); begin -- Test statements here select t.user_n ...
- 整理课堂笔记 pl/sql orcale异常
1>>>>>异常错误处理 1 >预定义的异常处理 预定义说明的部分 ORACLE 异常错误对这种异常情况的处理,只需在PL/SQL块的异常处理部分,直接引用相应 ...
- ORACLE PL/SQL编程详解
ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...
随机推荐
- flash读取XML节点内容以及节点属性
原文地址:http://hi.baidu.com/yqzdm/item/f95fd9d24679d916d90e44c9 一.xml的写法: 这里的xml只是在有限范围内的了解,限于写一些简单的用于f ...
- 黄聪:PHP5.6+7代码性能加速-开启Zend OPcache-优化CPU
说明 PHP 5.5+版本以上的,可以使用PHP自带的opcache开启性能加速(默认是关闭的).对于PHP 5.5以下版本的,需要使用APC加速,这里不说明,可以自行上网搜索PHP APC加速的方法 ...
- javascript世界一等公民—函数
简介 在很多传统语言(C/C++/Java/C#等)中,函数都是作为一个二等公民存在,你只能用语言的关键字声明一个函数然后调用它,如果需要把函数作为参数传给另一个函数,或是赋值给一个本地变量,又或是作 ...
- [运维-服务器 – 2A] – nginx下绑定域名
这个篇文章今天(2016-01-21)才有幸写了,因为自己对nginx部署以前没玩过,还得感谢下我们数字化的总经理.在这里记录下自己成长的经验,与遇到的问题. 因为自己的域名是在万网上买的,解析无法直 ...
- lower_bound实现函数
lower_bound实现 [参考链接]lower_bound二分的三种写法 我在以前,总是用lower_bound,现在发现这样不行,有些复杂的数据结构二分的时候用这个会很麻烦,不如手写二分,我接着 ...
- 2016 Multi-University Training Contest 5 ATM Mechine
ATM Mechine 本文转自:http://blog.csdn.net/queuelovestack/article/details/52096337 题意: 这题的意思还是比较费解的 Alice ...
- 设置Excel的自动筛选功能
单元格数字格式的问题 NPOI向Excel文件中插入数值时,可能会出现数字当作文本的情况(即左上角有个绿色三角),这样单元格的值就无法参与运算.这是因为在SetCellValue设置单元格值的时候使用 ...
- 转_ _android开发中如何结束所有的activity
每一个activity都有自己的生命周期,被打开了最终就要被关闭. 四种结束当前的activity方法 Java代码: //关闭当前activity方法一 finish(); //关闭当前界面方法 ...
- ylbtech-LanguageSamples-Yield
ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Yield 1.A,示例(Sample) 返回顶部 “Yield”示例 本示例演示如何创 ...
- 离线使用echarts及一些细节
最近要做图表,用js起来太麻烦,所以就找些开源的库来用,发现echarts挺不错, echarts的文档把所有东西都说的很明白了,直接下载zip包,要是想离线使用的话只需要引用下载包里面的dist文件 ...