专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Oracle管理

oracle 无法进入no_data_found 错误

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
oracle 无法进入no_data_found 异常
1:首先创建一个函数用于计算表emp中指定job的平均工资:

create or replace function get_avg_pay(var_job varchar2) return number is--创建一个函数,该函数实现计算某个职务的平均工资,传入职务名称参数
  num_avg_pay number;--定义临时变量,保存某个职务的平均工资
begin
  select avg(sal) into num_avg_pay from emp where job=var_job;--获取某个部门的平均工资
  return(round(num_avg_pay,2));--返回平均工资
exception
  when no_data_found then --若此职务不存在
    dbms_output.put_line('该职务不存在');
    return(0); --返回平均工资为0
end;
/

接着调用函数:

declare
  avg_pay number;
begin
  avg_pay := get_avg_pay('AAAAAA');  --不存在这个职位
  dbms_output.put_line(avg_pay);
end;
/

为什么输出结果是过程以成功完成,但是,因为不存在AAAAAA的职位记录,不是应该出现no_data_found的异常么?



------解决思路----------------------
因为你使用了组函数啊,默认组函数在没有记录时会有默认的返回值
如count会返回0,max、min、avg等会返回空,这样的话是不会触发异常的
使用组函数本来是避免出现no_data_found的一个方法,反倒让你纠结了,呵呵
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: