【Oracle】PL/SQL——异常错误处理

原创 2017年04月16日 16:59:18


异常情况处理(EXCEPTION) 是用来处理正常执行过程中未预料的事件, 程序块的异常处理预定义的错误 和 自定义错误, 由于 PL/SQL 程序块一旦产 生异常而没有指出如何处理时, 程序就会自动终止整个程序运行.

异常错误可以分为三种类型:

1)预定义异常

2)非预定义异常

3)用户自定义异常

这里进行分别说明

预定义异常处理



例子:

SET SERVEROUTPUT ON

DECLARE 
    V_SAL EMPLOYEES.SALARY%TYPE;

BEGIN
	SELECT E.SALARY INTO V_SAL FROM EMPLOYEES E WHERE E.DEPARTMENT_ID = 100;
	DBMS_OUTPUT.put_line(V_SAL);
	
EXCEPTION
	--预定义异常
	WHEN TOO_MANY_ROWS THEN DBMS_OUTPUT.put_line('得到的行数太多了!');
        WHEN OTHERS THEN DBMS_OUTPUT.put_line('出现其他类型错误!');
END;
/  
结果:

非预定义异常处理

首先必须对非定义的 ORACLE 错误进行定义。步骤如下:

1. 在 在 PL/SQL 块的定义部分定义异常情况:

      <异常情况> EXCEPTION;

2. 将其定义好的异常情况,与标准的 ORACLE 错误联系起来,使用 PRAGMA EXCEPTION_INIT 语句:

      PRAGMA EXCEPTION_INIT(< 异常情况>, < 错误代码>);

3. 在PL/SQL 块的异常处理部分对异常情况做出相应处理。

例子:

SET SERVEROUTPUT ON

DECLARE 
    E_DELETEID_EXCEPTION EXCEPTION;
    PRAGMA EXCEPTION_INIT(E_DELETEID_EXCEPTION, -02292);

BEGIN
    DELETE FROM EMPLOYEES E WHERE E.EMPLOYEE_ID = 100;

EXCEPTION
     --非预定义异常
    WHEN E_DELETEID_EXCEPTION THEN DBMS_OUTPUT.put_line('违反完整约束条件!不可删除此用户。');
    WHEN OTHERS THEN DBMS_OUTPUT.put_line('出现其他类型错误!');
END;
/  

用户自定义异常处理

当与一个异常错误相关的错误出现时,就会隐含触发该异常错误。 用户定义的异常错误是通过显式使用 RAISE 语句来触发。当引发一个异常错误时,控制就转向EXCEPTION 块异常错误部分,执行错误处理代码。

对于这类异常情况的处理,步骤如下:

1. 在 在 PL/SQL 块的定义部分定义异常情况:

     < 异常情况> EXCEPTION;

2. RAISE < 异常情况>;

3. 在 PL/SQL 块的异常情况处理部分对异常情况做出相应的处理。

例子:

SET SERVEROUTPUT ON

DECLARE 
    E_TOO_LOW_SAL EXCEPTION;		
    V_SAL EMPLOYEES.SALARY%TYPE;

BEGIN
    SELECT E.SALARY INTO V_SAL FROM EMPLOYEES E WHERE E.EMPLOYEE_ID = 140;
	
    IF V_SAL < 10000 THEN
        RAISE E_TOO_LOW_SAL;
    END IF;

EXCEPTION
    --用户自定义异常
    WHEN E_TOO_LOW_SAL THEN DBMS_OUTPUT.put_line('用户工资低于10000。');
    WHEN OTHERS THEN DBMS_OUTPUT.put_line('出现其他类型错误!');
END;
/  



版权声明:本文为博主原创文章,未经博主允许不得转载。

Oracle数据库之PL/SQL异常处理

Oracle数据库之PL/SQL异常处理异常指的是在程序运行过程中发生的异常事件,通常是由硬件问题或者程序设计问题所导致的。PL/SQL程序设计过程中,即使是写得最好的程序也可能会遇到错误或未预料到的...
  • zhliro
  • zhliro
  • 2015年06月14日 22:21
  • 1177

Oracle数据中的PL/SQL介绍

什么是Pl/SQL: PL/SQL是Procedure Language & Sturtured Query Language的缩写。PL/SQL的优点: 有利于客户/服务器环境应用的性能提高。...
  • qq455276333
  • qq455276333
  • 2013年10月01日 11:58
  • 1623

PL/SQL_处理例外1(预定义例外)

当开发PL/SQL应用程序时,为了提高应用程序的健壮性,开发人员必须考虑PL/SQL程序可能出现的各种错误,并进行相应的错误处理。如果不进行错误处理,在出现运行错误时,会终止PL/SQL程序的运行,并...
  • com185272358
  • com185272358
  • 2014年03月22日 11:20
  • 1111

PL/SQL之异常处理

PL/SQL常见异常处理方式,以及自定义异常处理
  • yhl_jxy
  • yhl_jxy
  • 2016年02月28日 19:53
  • 765

PL/SQL异常处理

keywords :  PL/SQL  Exception 1:PL/SQL异常处理官方文档 2:教程1 3:教程2 4:教程3 讨论三个问题: 1:什么是异常处理 2:异常处理...
  • topwqp
  • topwqp
  • 2013年06月12日 01:47
  • 2198

Oracle PL/SQL常用47个工具包

Oracle PL/SQL Utility Library PL/SQL 各种常用工具包代码,包含: PDF文件生成工具包 Excel文件生成、 RTF文件生成、 Zip文件压缩与解压、 ...
  • nansheng_su
  • nansheng_su
  • 2015年05月11日 20:53
  • 1170

PL/SQL客户端连接ORACLE服务端配置详细过程

PL/SQL客户端连接ORACLE服务端配置详细过程
  • AaronSiHai
  • AaronSiHai
  • 2017年03月14日 09:46
  • 1762

Oracle 11g 安装教程及pl/sql下载安装

一般来说,下载后都会有两个压缩包,将这两个压缩包解压到同一个文件夹下,本例中解压目录为“database” 进入目录后看到setup.EXE,双击运行 稍等片刻后会出现如下安装界面:可根据当前...
  • u010750497
  • u010750497
  • 2017年01月03日 17:36
  • 3255

oracle客户端PL/SQL安装简易教程

前言:oracle客户端有很多,市面上最常用的是PL/SQL,另外还有navicat for oracle,toad for oracle,以上两个都收费,还有一个为oracle官方推出的免费orac...
  • fengbird
  • fengbird
  • 2017年01月06日 23:25
  • 2019

PL/SQL--异常处理

PL/SQL–异常处理PLSQL 中的例外一般有两种: 1 、Oracle 内部错误抛出的例外:这又分为预定义例外(有错误号+ 常量定义) 和 非预定义例外(仅有错误号,无常量定义) 2 、...
  • E_xiake
  • E_xiake
  • 2016年12月29日 15:30
  • 241
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Oracle】PL/SQL——异常错误处理
举报原因:
原因补充:

(最多只允许输入30个字)