ORACLE异常处理问题,搞不懂,求助
Declare
Function dept_count(dept_no number)
return number
Is
v_deptcount number(2);
count_null exception;
Begin
select count(*) into v_deptcount from emp where deptno=dept_no;
if v_deptcount=0 then
raise count_null;
else
return v_deptcount;
end if;
EXCEPTION
WHEN count_null THEN
raise_application_error (-20001, '不存在部门号为'|| TO_CHAR(dept_no)|| '的部门!');
End;
Begin
DBMS_OUTPUT.PUT_LINE('60号部门的人数为:'|| TO_CHAR(dept_count(60)));
End;
Declare
*
ERROR 位于第 1 行:
ORA-20001: 不存在部门号为60的部门!
ORA-06512: 在line 16
ORA-06512: 在line 20
由于表中无60号部门,故会发生异常。这个PL/SQL块除了我自定义的那个异常外,难道还会有其他异常错误吗。假如把异常放在执行块里处理,就不会有问题。但是我现在想把它放在声明块里处理,如何让他只提示‘不存在部门号为**的部门!’
请大家帮帮忙 ,谢谢!
EMP表见附件
相关推荐
Oracle PL/SQL异常处理方法解析
Oracle数据库中的异常:没有异常的转移,因为没有受检异常和非受检异常得区分。 1.异常的产生: 2.异常的处理: declare –变量定义,初始化赋值。 begin –变量的赋值,函数调用,if,while等。 exception –异常处理代码 when others then 异常处理语句。 end; 3.异常的抛出:raise 4.多异常处理:Java的多异常是通过数据类型区分,Oracle数据库的多异常是通过异常编号区分。 区别不同的异常是实现多异常处理前提。 declare verror exception;–定义异常变量
Oracle中异常处理
错误处理 能够检测并且进行错误处理的叫做异常,一般分为用户自定义异常,系统预定义异常。 预定义异常 一:除数是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
ORACLE异常处理剖析.pdf
ORACLE异常处理剖析.pdf
Oracle 异常处理
NULL 博文链接:https://chaoyi.iteye.com/blog/2147396
ORACLE游标与异常处理
NULL 博文链接:https://quicker.iteye.com/blog/1157942


