首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

游标有关问题 最后一个结果读了两次

2012-02-29 
游标问题 最后一个结果读了两次DeclareMy_CursorCursorFORSelectClassIDFromCA_Global_ClasswhereChannelI

游标问题 最后一个结果读了两次
Declare   My_Cursor   Cursor     FOR   Select   ClassID   From   CA_Global_Class     where   ChannelID   =@ChannelID   order   by   Sortorder

open     My_Cursor
Fetch   Next   From   My_Cursor  
into   @SaveClassID
print   @SaveClassID

while   @@FETCH_Status=0  
BEGIN
   
      Fetch   Next   From   My_Cursor  
into   @SaveClassID
print   @SaveClassID
END
Close   My_Cursor
deallocate   My_Cursor
结果为
203
202
205
206
206
最后一个结果读了两次

[解决办法]
最后一次取失败的时候,你还是会打印之前取的值吧
[解决办法]
建议你将每次的@@FETCH_Status也打印出来,看两个206,是不是一次是成功的时候打印的,一次是失败的时候打印的,如果是的话,就要改你的while控制语句了
[解决办法]
你这样试试看

Declare My_Cursor Cursor FOR Select ClassID From CA_Global_Class where ChannelID =@ChannelID order by Sortorder

open My_Cursor
Fetch Next From My_Cursor
into @SaveClassID

while @@FETCH_Status=0
BEGIN
print @SaveClassID
Fetch Next From My_Cursor
into @SaveClassID

END
Close My_Cursor
deallocate My_Cursor

[解决办法]
呵呵,逻辑是不对的。
Fetch后应该马上判断状态并且如果没有数据用Break退出循环。
[解决办法]
嗯,既然搞清楚了,就结贴吧,呵呵!!

热点排行