sql语句如下 
open c for select DMSM1 from zl_code where dmlb='8'and dmz='A';
    loop
    fetch c into csys ;
        --csysstr:=csysstr||csys;
    exit when c%notfound;
    end loop;
    close c;明明只有一条记录,但总要进去循环两次,就会查出重复记录。
请问这是哪的问题啊

解决方案 »

  1.   

    open c for select DMSM1 from zl_code where dmlb='8'and dmz='A';
      loop
      fetch c into csys ;
        exit when c%notfound;------把这个跟到fetch的后面,试下。。
      end loop;
      close c;
      

  2.   

    跟while(condition) do... 
    与do ...while(condition)类似
      

  3.   


    ---因为你第一次的时候c%notfound 为false ,而csys 值已经赋值,会在第二次执行循序体 所以会有
     --csysstr:=csys          1次
    --csysstr:=csys||csys     2次
    loop
      fetch c into csys ;
     exit when c%notfound;第二次为true 退出循序
     csysstr:=csysstr||csys;
      end loop;
      close c;
      

  4.   

    判断是否到结尾需要两次循环,第二次判断是否和第一次相同(应该是判断rowid),如果相同才能判断出已经到结尾.