PL/SQL中的异常处理

来源:互联网 发布:商业数据分析师的能力 编辑:程序博客网 时间:2024/05/29 18:12

 

在设计PL/SQL程序时,经常会发生这样或那样的错误,异常处理就是针对错误进行处理的程序段,
Oracle 9i中的异常处理分为系统预定义异常处理和自定义异常处理两部分。
  系统预定义异常处理

  系统预定义异常处理是针对PL/SQL程序编译、执行过程中发生的问题进行处理的程序。下列代码为正确代码,在【SQLPlus Worksheet】中能够顺利执行

set serveroutput on

declare

tempno integer :=90;

 begin

tempno:=tempno+1;

end;

 

 

set serveroutput on

declare

tempno integer :=100;

 begin

tempno=tempno+1;//正确代码为:tempno:=tempno+1

end;

 

 

Oracle 9i提供了很多异常处理,读者可以尝试修改可以正常运行的程序,并执行修改后的程序,就可以发现调用了哪些异常处理,下面着重介绍如何自定义异常处理。
  自定义异常处理
  1. 定义异常处理
  定义异常处理的语法如下:
  declare
  异常名 exception;
  2. 触发异常处理
  触发异常处理的语法如下:
  raise 异常名;
  3. 处理异常
  触发异常处理后,可以定义异常处理部分,语法如下:
  Exception
  When 异常名1 then
  异常处理语句段1;
  When 异常名2 then
  异常处理语句段2;
 
4. 实例
  下面的PL/SQL程序包含了完整的异常处理定义、触发、处理的过程。定义名为salaryerror的异常,在scott.emp数据表中查找empno=7566的记录,将其值放入变量tempsal中,判断tempsal值若不在9002600之间,说明该员工的薪水有问题,将激活异常处理,提示信息。
  在【SQLPlus Worksheet】中执行下列PL/SQL代码

set serveroutput on

declare

salaryerror exception

tempsal scott.emp.sal%type;

begin

select sal into  tempsal from scott.emp

where empno = 7566;

if  tempsal<900 or tempsal>2600 then

raise salaryerror;

end if;

exception

when salaryerror then

dbms_output.putline("薪水超出范围");

end;

结果显示:

薪水超出范围

PL/SQL 过程已成功完成!

 
下列代码为错误代码:
原创粉丝点击