欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

为啥用游标无法取到全部记录

更新时间: 2014-01-05 02:15:50 责任编辑: Author_N1

 

为何用游标无法取到全部记录
tmp_ldl_sp表中有300多条记录,但用这个游标,每次也只能取到70条左右,哪位能帮忙看一下,不胜感激!


create or replace procedure P_VAC_SP_INSERT is
  V_attr_id       attr.attr_id%TYPE;
  V_attr_value_id attr_value.attr_value_id%TYPE;
  v_Errorcode        Varchar2(20);
  v_Errormsg         Varchar2(1024);
  i_Step             Number;

  CURSOR C_sp_code IS
    SELECT party_id
      FROM tmp_ldl_sp a
   GROUP BY a.party_id;

begin

  i_Step:=0;
  dbms_output.put_line('begin');

  SELECT a.attr_id
    INTO V_attr_id
    FROM attr a
   WHERE a.attr_name LIKE '%SP Code%'; 

  OPEN C_sp_code;   
    i_Step:=1;
    FETCH C_sp_code INTO V_attr_value_id; 
    WHILE C_sp_code%FOUND LOOP

               FETCH C_sp_code INTO V_attr_value_id;
               dbms_output.put_line('V_attr_value_id=' || V_attr_value_id);
               DBMS_OUTPUT.PUT_LINE('记录数:'|| C_sp_code %ROWCOUNT);
    END LOOP;
    
  CLOSE C_sp_code;

  EXCEPTION     
    When Others Then
      v_Errorcode := Sqlcode;
      v_Errormsg  := Sqlerrm;
      Insert Into P_VAC_SP_INSERT_log
      Values
        (V_attr_value_id, i_Step, v_Errorcode, v_Errormsg, Sysdate);
      Commit;

end P_VAC_SP_INSERT;

--参考方法--
  
CURSOR C_sp_code IS
    SELECT party_id
      FROM tmp_ldl_sp a
   GROUP BY a.party_id;
--group by了就把重复的剃掉了,你去掉group by 应该就和表记录数一样了。



--参考方法--
引用:
引用:
引用:引用:
引用:SQL code

    CURSOR C_sp_code IS    SELECT party_id       FROM tmp_ldl_sp a    GROUP BY a.party_id; --group by了就把……


你确定查询结果都是 60条?
那重复的 不算么?
如果有重复的party_id,结果一定多于60条
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:15:50
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7697/
本文WWW.DOC100.NET DOC100.NET版权所有。