请问mssql中,用循环游标update列数据的方法

某列数据有100行,原本设计是1-100这样等差排序的,但是数据传输有误,出现了漏数、重复的情况,想用cursor加上for循环重新更新,请问要怎么写?谢谢... 某列数据有100行,原本设计是1-100这样等差排序的,但是数据传输有误,出现了漏数、重复的情况,想用cursor加上for循环重新更新,请问要怎么写?谢谢 展开
 我来答
百度网友4efe45b
2013-12-03 · TA获得超过441个赞
知道小有建树答主
回答量:266
采纳率:100%
帮助的人:299万
展开全部
--建立环境
create table t1
(
id int
)

--插入数据,这里插入奇数
declare @i int
select @i = 0
while (@i < 100)
begin
insert into t1 select @i * 2 +1
select @i = @i + 1
end

--游标处理
declare @ii int
declare @k int
select @k = 1,@ii = 1

declare c_update_id cursor for
select id from t1
for update

open c_update_id

fetch next from c_update_id into @ii
while(@@fetch_status=0)
begin
update t1 set id = @k where current of c_update_id

fetch next from c_update_id into @ii
select @k = @k + 1
end

CLOSE c_update_id
DEALLOCATE c_update_id

--查询
select * from t1

--删除环境
drop table t1

--以上代码在sql server 2005 测试通过

PS: 如果这个表有主键的话,就非常简单,不用游标,一条update语句搞定。
追问
declare @id int
declare @sfxm nvarchar(50)
set @id=1
declare cur cursor for
select 编号序号 from 维修单
open cur
Fetch next From Cur Into @sfxm
while @@FETCH_STATUS =0
begin
while @id<(select COUNT(*) from 维修单)
追答
declare cur cursor for
select 编号序号 from 维修单
for update --这句是必须的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式