读书人

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

发布时间: 2012-02-29 16:44:11 作者: rapoo

游标问题 最后一个结果读了两次
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退出循环。
[解决办法]
嗯,既然搞清楚了,就结贴吧,呵呵!!

读书人网 >C#

热点推荐