Declare My_Cursor Cursor FOR Select ClassID From CA_Global_Class where ChannelID =@ChannelID order by Sortorderopen My_Cursor
Fetch Next From My_Cursor
into @SaveClassID
print @SaveClassIDwhile @@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 Next From My_Cursor
into @SaveClassID
print @SaveClassIDwhile @@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 Next From My_Cursor
into @SaveClassIDwhile @@FETCH_Status=0
BEGIN
print @SaveClassID
Fetch Next From My_Cursor
into @SaveClassIDEND
Close My_Cursor
deallocate My_Cursor
老兄,你自己再仔细琢磨一下吧,逻辑非常正确
最后一次的值没得到的话,怎么会输出来的呢?
Fetch后应该马上判断状态并且如果没有数据用Break退出循环。
如果是的话,还要请你再仔细看看代码了while 循环会判断 @@FETCH_Status状态
如果取到最后一行后再往下取,这时@@FETCH_Status就不会等于0了
就不会再运行
BEGIN
print @SaveClassID
Fetch Next From My_Cursor
into @SaveClassID
END
这段代码了我敢保证代码的逻辑一点问题都没有,可以请高手来确认一下啊!
print @SaveClassID
Fetch Next From My_Cursor
into @SaveClassID
中的Fetch Next From My_Cursor
into @SaveClassID
不是在提取数据吗 那么最后一次的值没有被输出啊
你的代码 当只有一条记录的确时候 应该输不出来啊
Fetch Next From My_Cursor
into @SaveClassIDwhile @@FETCH_Status=0
BEGIN
print @SaveClassID
Fetch Next From My_Cursor
into @SaveClassIDEND
当只有一条记录的时候
Fetch Next From My_Cursor
into @SaveClassID
读取记录
此时 @@FETCH_Status = -1
那么我就获取不到记录啊
to changkimkim() 没有错因为 Fetch Next From My_Cursor 提取数据 它提取到最后的一条数据时候它无法判断是最后一条数据 所以@@FETCH_Status 还是为0 只有Fetch Next From My_Cursor 提取到的数据为null的时候 它才把@@FETCH_Status为-1 此时才结束 不过还是得谢谢大家
declare @ChannelID int
declare @saveClassID int
set @channelID =2Declare My_Cursor Cursor FOR Select ClassID From CA_Global_Class where ChannelID =2 order by Sortorderopen My_Cursor
Fetch Next From My_Cursor
into @SaveClassID
IF(@SaveClassID is not null)
BEGIN
print @SaveClassID
END
while @@FETCH_Status=0
BEGIN
SET @SaveClassID= null
Fetch Next From My_Cursor
into @SaveClassID
IF(@SaveClassID is not null)
BEGIN
print @SaveClassID
ENDEND
Close My_Cursor
deallocate My_Cursor