请问mssql中,用循环游标update列数据的方法
发布网友
发布时间:2022-04-07 16:25
我来回答
共1个回答
热心网友
时间:2022-04-07 17:54
--建立环境
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 --这句是必须的