7.6 PL/SQL中的异常
同其他语言的程序一样,用PL/SQL编写的程序在运行过程当中也会出现各种错误,这些错误也可以称为异常。异常在PL/SQL中是很重要的一部分。
7.6.1 什么是异常
PL/SQL运行过程中有可能会出现错误,这些错误有的来自程序本身,也有的来自开发人员自定义的数据,而所有的这些错误我们称之为异常(编译时的错误不能称为异常)。
为了使程序有更好的阅读性和健壮性,PL/SQL采用了捕获并统一处理异常的方式。当异常发生时,程序会无条件跳转到异常块处,将控制权限交给异常处理程序。异常处理程序将进行异常匹配,如果当前的块内没有对应的异常名称,则异常会传至当前程序的上一层程序中查找,如果一直向上查找却依然没有找到对应的处理方式,则该异常会被传至当前的主机调用中,而运行的程序也会中断。
【示例24】异常演示示例
脚本演示了除数为0的异常。脚本如下:
01 DECLARE
02 v_rslt NUMBER(10):=0;
03 BEGIN
04 v_rslt:=100/0;
05 DBMS_OUTPUT.PUT_LINE('结果是:'||v_rslt);
06 END;
07 /
【代码解析】
❑第4行表示求除法运算的结果,不过这里除数出现了0,除数为0在四则混合运算中是不被允许的,编译程序时会正常通过,但执行程序时会出现错误提示,也就是有异常抛出。
【执行效果】
在SQL*Plus下执行示例脚本,执行过程见图7.29。
图 7.29 PL/SQL异常演示
从执行结果中可以看出,程序出现错误,提示除数为0,"ORA-01476"是错误号。除数为0的异常属于Oracle内部定义异常。