使用例外處理
--example
begin
     select fld into v_tmp from table;
exception
  when no_data_found then
     fld := '默認值';
END;

解决方案 »

  1.   

    baojianjun(包子) 说的对;
    nvl只对null值处理,而你的select fld into  v_tmp from table是返回空记录。
      

  2.   

    在用之前先 select count(*) into ll_count  from table ;
     if isnull(ll_count) then ll_count = 0 
     if ll_count > 0 then
        select fld into v_tmp from table ;
      else
         // do ...
     end
      

  3.   

    同意zzffhh,先用照着into的写法,copy出一个count(Key_Field)的查询, count总归是有值的,然后写if...else
      

  4.   

    zzffhh方法降低处理速度,包子正解
      

  5.   

    谢谢大家,先count的方法我也知道,但是那样写出的程序结构不好,而且多一次查询,效率会比较低。
    用例外处理的方法好一点。
    我觉得最好还是Oracle自己能提供赋默认值的方法,不过看来现在还没有。
    结贴了。