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