第一个问题:
异常处理 的 exception when no_data_found  和 判断语句 if sql%rowcount = 0 
  有什么区别? exception when no_data_found  不就是因为sqlrowcount=0 的原因吗? 第二个问题:
exception when no_data_found 和  if (sql%notfound) 的作用是不是都抛出异常 ,作用上是等效的吗?

解决方案 »

  1.   

    exception when no_data_found  是对SELECT INTO语句造成的异常的处理。
    if (sql%notfound)是对游标的判断。这个不是异常,它不会抛出,只是个判断条件。
      

  2.   

    if sql%rowcount = 0 是打开的显式或隐失游标的记录数的判断,它也不触发异常。异常是某一条语句存在问题,然后就直接跳到异常处理的那块去。
    有时侯你也可以避免异常处理,比如加上一些判断条件。
      

  3.   

    我现在要判断一个 select into 语句 是否查询到数据 
    我在语句后面写 if sql%notfound  但是不执行 直接转到异常处理里去了 呀?
      

  4.   

    都跟你说了sql%notfound 是游标的,你应该先用SELECT COUNT(*) INTO 。。 FROM 
    在判断这个值是不是0。这样就再看是否进行Select 。。 into 。。
      

  5.   

    判断一个 select into 语句 是否查询到数据 使用 exception when no_data_found