错误处理
能够检测并且进行错误处理的叫做异常,一般分为用户自定义异常,系统预定义异常。
预定义异常
|
一:除数是0的系统异常 declare v_number Number(2):=10; v_zero Number(2):=0; v_result Number(5); begin --v_number/v_zero,会产生系统异常 v_result:=v_number/v_zero; end;
二:处理上面的异常 declare v_number Number(2):=10; v_zero Number(2):=0; v_result Number(5); begin --v_number/v_zero,会产生系统异常 v_result:=v_number/v_zero; Exception when ZERO_DIVIDE THEN DBMS_OUTPUT.put_line('除数不能为0'); end;
三:多异常处理 declare v_result country.country_name%type; begin select country_name into v_result from country where country_name='BeiJing'; DBMS_OUTPUT.put_line('the country name is '||v_result); exception when TOO_MANY_ROWS then DBMS_OUTPUT.put_line('There is TOO_MANY_ROWS error'); when NO_DATA_FOUND then DBMS_OUTPUT.put_line('There is NO_DATA_FOUND error') END; |
常见的系统预定义异常
|
1 |
DUP_VAL_INDEX |
违反了唯一性 |
|
2 |
LOGIN_DENIED |
用户名或密码错误 |
|
3 |
NO_DATA_FOUND |
没有发现数据 |
|
4 |
TOO_MANY_ROWS |
数据行太多 |
|
5 |
VALUE_ERROR |
算法或转换错误 |
自定义异常
调用自定义异常处理需要使用raise关键字处理
|
一:自定义异常过程 declare v_overNmber EXCEPTION; --定义异常处理变量 v_salesNumber Number(9); --当前的订单数 v_maxNumber Number(9):=500; --定义允许的最大值 begin --从表中取出数量 select count(*) into v_salesNumber from sales; --比较当前单数和最大的单数的,如果超过最大单数,就进行异常处理 if v_maxNumber<v_salesNumber then --进行异常处理 raise e_overNumber; end if; exception when e_overNumber then DBMS_OUTPUT.put_line('查到的单数超过最大数,数据异常'); end; |
本文介绍了数据库编程中的异常处理方法,包括系统预定义异常如除数为0、数据未找到等,以及如何通过自定义异常来增强程序的健壮性和灵活性。
4499

被折叠的 条评论
为什么被折叠?



