declare
 terr_samp M_TERRITORY.TERRITORY_NME%type;
 begin
 select nvl(TERRITORY_NME,0) into terr_samp from  M_TERRITORY ;
 end;

解决方案 »

  1.   

    declare
     terr_samp M_TERRITORY.TERRITORY_NME%type;
     begin
     select TERRITORY_NME into terr_samp from  M_TERRITORY where TERRITORY_NME is not null;
     end;
      

  2.   

    sccyzhi(富曲) 的方法恐怕不行吧!
    大家可以试试看就知道了,依然报错!
    不过如果写成就可以了!
    declare
     terr_samp M_TERRITORY.TERRITORY_NME%type;
     begin
     select nvl(min(TERRITORY_NME),0) into terr_samp from  M_TERRITORY ;
     end;其中,不一定用min函数,任意其他类似地都可以!比如max,avg,sum等
      

  3.   

    declare
     terr_samp M_TERRITORY.TERRITORY_NME%type;
     begin
     select NVL(min(TERRITORY_NME),-1) into terr_samp from  M_TERRITORY ;
     end;
    '-1'用一个在这个表单中不存在 的值做标志!
    这里应该有两种情况吧
     一 是 terr_samp is null
     二 是 多行对一行的错(too_row)吧
    不过不明白为什么不用异常处理 其实异常处理很好啊:可以知道那是由于什么原因产生异常
    然后解决它
      exception
         when No_Data_Found then
           raise_Application_Error(-20023,'空值异常');
         when others then
           raise_application_Error(-20020,'异常'||SQLERRM);
           rollback;