如果是字段的值是NULL则select时是不会报“没有找到数据”的。出现“没有找到数据”应当是未找到记录,可以用exception来捕获错误,如:
begin
  select uqi into num from ...
exception
  when NO_DATA_FOUND then 
  begin
  --如果未找到记录的特殊处理
  end;
  when others then
  being
  --发生其他类型错误时的处理
  end;
end;

解决方案 »

  1.   

    use nvl(columnname,'privatevalue').
      

  2.   

    select nvl(uqi,0)  into num from emp_cod where uqi=100
      

  3.   

    select uqi  into num from emp_cod where uqi=100这条语句只有两种可能结果,一种是uqi=100,另一种就是没有找到记录,你在说num可能为NULL的情况,那就是说明你在number num是没有初始化啊,系统默认是NULL。
    但是建议你不要这样做,
    IF NUM IS NOT NULL THEN
      //处理其它事!
     END IF
    因为在sql没有找到记录时,num的值是不会被改变,如果在这个sql之前num的被改变了那你if里的代码永远不会被执行。可以这样
    IF SQL%NOTFOUND THEN
    //处理其它事!
     END IF
      

  4.   


    decalare 
     n integer;
    begin
     select  count (*) into n from ... where ..
     if n=0 then
     ....
     else
     ..
     end if;
    end;
      

  5.   

    select nvl(可能是空的,0) from table where condition nvl,就是如果前者为空,就用后者替换。
      

  6.   

    正如 bobfang(匆匆过客) 所说的:
    “如果是字段的值是NULL,select时是不会报‘没有找到数据’的。出现‘没有找到数据’应当是未找到记录,可以用exception来捕获错误”泥的问题跟使用NVL函数无关!