不好意思,新手提问关于:游标定位

来源:百度知道 编辑:UC知道 时间:2024/05/15 11:45:14
sqlserver2005客户端sql查询工具
××××××××××
我定义个游标
declare cur_1 cursor for SELECT top 5 abc FROM tb1
然后update了某些字段的操作
最后
close cur_1
deallocate cur_1
××××××××××
如上我修改成功了表中前5行的数据
××××××××××
当我重新运行以上代码时,为什么从游标定位在原表第6行开始后5行了???
但是我光执行SELECT top 5 abc FROM tb1发现结果集确实还是前5行啊
如果以上代码不含update,就不会往下走
谢谢关注的朋友,当然要open了,要不怎能update成功呢。。。
fetch next from cur_1 into @str
while @@fetch_status = 0
begin
........
update tb1 set Define11=@l, Define12=@w, Define14=@h where current of cur_1
fetch next from cur_1 into @str
end

@@@@@@@@@@@@@@@
奇怪的就是:
我已经释放游标了,下次当我再运行此段代码时,却不是原本(从光执行SELECT top 5 abc FROM tb1的)结果集的首行开始
难道‘TOP’关键字在不同地方有不同的解释,或是与什么临时表有关?

我觉得你释放的游标,是你定义的那个游标。
但是表内部是有自己的一个“指针”或“游标”的,而促使停在那的我觉得正是你的update语句,你试试update一下别的数据,再用游标,估计还是停在你update的那个位置