标题:SQL SERVER游标问题--所请求的行不在提取缓冲区内
取消只看楼主
qianliemao
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-1-30
结帖率:100%
已结贴  问题点数:20 回复次数:1 
SQL SERVER游标问题--所请求的行不在提取缓冲区内
请帮我看看下面的游标有什么问题:
说明:tab表中有字段ID,adress.现在要重新编排ID,adress列相同的记录共用同一个ID.第一条记录的ID已经确定为1,往后依次递增.

declare cur_tab cursor scroll for   
select ID,address from tab
for update of ID
declare @xuhao1 varchar(15),@xuhao2 varchar(15),@addr1 varchar(15),@addr2 varchar(15)
open cur_tab
fetch next from cur_tab into @xuhao1,@addr1
while @@fetch_status=0
begin  
  fetch next from cur_tab into @xuhao2,@addr2
  if @addr1=@addr2
    update tab set ID=@xuhao1 where current of cur_tab
  else
    update tab set ID=@xuhao1+1 where current of cur_tab
  set @xuhao1=@xuhao2
  set @addr1=@addr2
end
close cur_tab                        
deallocate cur_tab  


执行结果有这样的提示:

执行结果报错:
服务器: 消息 16930,级别 16,状态 1,行 10
所请求的行不在提取缓冲区内。
语句已终止。

查看结果,发现只增加了一个新的ID.这样看来是没有正常循环,但是又找不到哪里有毛病,哪位帮我看看,谢谢!
搜索更多相关主题的帖子: SERVER 游标 SQL 请求 缓冲 
2010-01-30 21:03
qianliemao
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-1-30
得分:0 
谢谢楼上,这样不报错,不过结果还是不对.
按楼上给的测试数据,执行结果中ID 应该依次为 1,1,1,2
但是实际执行结果是:                        1,1,2,3

可见还是没有达到目的!
2010-01-31 15:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-296917-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.390433 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved