ORACLE学习之PL/SQL中异常
来源:互联网 发布:仓库数据流程图 编辑:程序博客网 时间:2024/06/05 23:45
PL/SQL处理异常的基本语法
declare
begin
EXCEPTION
WHEN exception1 [or exception2] THEN
statement
WHEN exception3 [or exception4] THEN
statement
WHEN OTHERS THEN
statement
end;
异常类型:
1、预定义异常
ORACLE 本身自己已经定义了号名称的常用异常,Oracle 一共提供了25中预定义异常。
常用的有:NO_DATA_FOUND、TOO_MANY_ROWS、ZERO_DIVIDE、CASE_NOT_FOUND等
可以通过如下SQL查询ORACLE预定义的25中异常
select * from DBA_SOURCE where name='STANDARD' and text like '%EXCEPTION_INIT%'
2、非预定义异常
Oracle中很多异常都是非预定义的,他们只有错误编号和相关的错误描述,而没有名称的异常是不能被捕获的。
为了解决这个问题Oracle允许开发人员为这样的异常添加一个名称,使得他们能够被异常处理模块捕获。
示例:
-- Created on 2017/8/2 by ADMINISTRATOR
declare
v_info varchar2(200);
my_2291_exp EXCEPTION; --声明一个异常
begin
v_info:='test';
UPDATE STAFF SET STAFF.WAREA_ID=v_info WHERE STAFF.STAFF_ID=2; --此处修改STAFF一个不存在的部门
EXCEPTION
WHEN my_2291_exp THEN
DBMS_OUTPUT.put_line('违反完整约束条件,未找到父项关键字' );
DBMS_OUTPUT.put_line(SQLERRM);--异常说明
DBMS_OUTPUT.put_line(SQLCODE);--异常代码
ROLLBACK;
end;
3、自定义异常
开发中遇到与业务有关的错误,如数量不能为负数,性别必须是男或者女等。这些不属于系统错误,
因此不能使用预定义异常和非预定义异常来捕捉它们。
示例:
-- Created on 2017/8/2 by ADMINISTRATOR
declare
-- Local variables here
test_exp EXCEPTION;
PRAGMA EXCEPTION_INIT(test_exp,-20001); --错误号范围是 -20999 ~ -20000 之间的整数
begin
-- Test statements here
if 1>0 then
RAISE test_exp; -- 显式抛出异常
end if;
EXCEPTION
WHEN test_exp THEN
DBMS_OUTPUT.put_line('这里接住异常');
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('未找到匹配异常');
end;
- ORACLE学习之PL/SQL中异常
- 学习ORACLE之PL/SQL
- oracle 学习之 PL/SQL
- Oracle数据库之PL/SQL异常处理
- oracle pl/sql 异常
- 学习PL/SQL之六:处理异常
- PL/SQL编程学习之异常处理
- Oracle之SQL、PL/SQL学习笔记
- Oracle之SQL、PL/SQL学习笔记
- Oracle学习笔记 -- day07 PL/SQL基本语法之变量、常量、游标、异常
- Oracle之PL/SQL学习笔记
- Oracle PL/SQL学习 之 游标
- Oracle PL/SQL学习之 程序包 触发器
- Oracle学习笔记之PL/SQL编程
- oracle 学习笔记之PL/SQL程序设计
- Oracle之PL/SQL学习笔记
- Oracle之PL/SQL学习笔记
- Oracle之PL/SQL学习笔记
- JDBC总结
- IBM Ponder This November 2009【贪心】【哈夫曼树】
- jQuery自带的一些常用方法总结
- ZooKeeper 学习 (三) 客户端zkCli.sh以及相关操作命令
- 《编程之美》寻找发帖水王 质疑
- ORACLE学习之PL/SQL中异常
- 为解决的错误
- 总结JS中所有变量的类型和true/false
- C++单例模式
- 20170802
- mysql主从复制 及读写分离
- caffe Resnet-50模型训练及测试
- 正则表达式二
- Java基础概念