存储过程中, 下面这个简单的语句 在该表(Tab1 )中 没有符合where条件记录的情况下 为什么会报错 走到exception里面, 应该怎么解决啊?
select RESULT into l_Result from Tab1 where SERIALID = l_SerialID;

解决方案 »

  1.   

    当没有符合where条件记录的情况下,查询结果为空,会报exception。
    可以先判断一下是否有符合where条件记录,通过查询数量就行,如果数量>0,则执行查询。
      

  2.   

    SELECT COUNT(*) INTO num FROM Tab1 WHERE serialid = l_SerialID;
    IF num > 0 THEN
      select RESULT into l_Result from Tab1 where SERIALID = l_SerialID;
    ELSE
      ....
    END IF;
      

  3.   

    SELECT COUNT(*) INTO num FROM Tab1 WHERE serialid = l_SerialID;
    IF num > 0 THEN
      select RESULT into l_Result from Tab1 where SERIALID = l_SerialID;
    ELSE
      ....
    END IF;
      

  4.   

    或者
    select RESULT into l_Result from Tab1 where SERIALID = l_SerialID;改成
    select result into l_result from
    (select result from tab1 where serialid=l_serialid
    union all select null result from dual order by 1)
    where rownum=1;
    若查询结果为空,则返回空值
      

  5.   

    SELECT COUNT(*) INTO num FROM Tab1 WHERE serialid = l_SerialID;
    IF num > 0 THEN
      select RESULT into l_Result from Tab1 where SERIALID = l_SerialID;
    ELSE
      ....
    END IF;[/