ORACLE异常处理问题,搞不懂,求助

showvin2 2008-06-09 03:53:08
编写一个匿名PL/SQL程序块,调用局部(本地)函数(输入参数是部门号)查询并显示10号部门的人数。要求函数体内有对不存在部门号的异常处理,给用户的错误指示信息是:不存在部门号为**的部门!
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表见附件
...全文
40 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
showvin2 2008-06-09
  • 打赏
  • 举报
回复
回答别人的。发错了
showvin2 2008-06-09
  • 打赏
  • 举报
回复
select MONTHS_BETWEEN(to_date('2009-2-8','YY-MM-DD'),sysdate) from dual

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧