大家好请教个游标执行问题
大家好请教个问题
declare cursor_tb2 scroll cursor
for select * from tb
open cursor_tb2
declare @id int ,@value varchar(10)
fetch next from cursor_tb2 into @id,@value
while @@fetch_status=0
begin
select * from tb
where id=@id and value=@value
fetch next from cursor_tb2 into @id,@value
end
----------------------
执行结果
id value
1 aa
id value
1 bb
id value
2 aaa
id value
2 bbb
id value
2 ccc
--------------------------------------游标未释放
declare @id int ,@value varchar(10) fetch next from cursor_tb2 into @id,@value
while @@fetch_status=0
begin
select * from tb
where id=@id and value=@value
fetch next from cursor_tb2 into @id,@value
end
执行结果 没有结果,只返回消息:命令已成功完成。
--------------------------------------------
为什么第二次执行的时候没有结果返回啊 ,请大家指点下谢谢
附: tb表:id value1 aa
1 bb
2 aaa
2 bbb
2 ccc
------解决方案--------------------游标未释放,第一次执行时@@fetch_status=0已经满足,第二次执行时一开始就是@@fetch_status=0了,所以你会看不到结果了.
程序运行结果是合理的.
------解决方案--------------------游标未释放,已经到了最后一行,没有数据
------解决方案--------------------游标指针已到最后一行,@@FETCH_STATUS=-1
while @@fetch_status=0 --> 不成立
不会执行循环内的语句.