读书人

大家好请问个游标执行有关问题

发布时间: 2012-06-21 13:42:41 作者: rapoo

大家好请教个游标执行问题
大家好请教个问题
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 --> 不成立
不会执行循环内的语句.

读书人网 >SQL Server

热点推荐