关于修复数据的问题(游标的简单使用)

1、背景:
  按主表分组,修复从表数据的顺序号
2、思路:
  使用游标来实现,逻辑类似于一个双层循环,循环赋值    
3、具体实现:
declare @a int,@error INT,@operationID NUMERIC(10,0),@workStepInfoID BIGINT,@workOrderID INT declare @temp NUMERIC(10,0) set @a=1 --用于更新序号 set @error=0 -- 错误号 set @temp=0 -- 主表分组标识 begin tran --申明事务 --申明游标 declare order_cursor cursor for SELECT operationID,workStepInfoID,workOrderID FROM WorkStepInfo WHERE workOrderID <> 0 AND workStepInfoID>634759 ORDER BY operationID,workStepInfoID --打开游标-- open order_cursor --开始循环游标变量-- fetch next from order_cursor into @operationID,@workStepInfoID,@workOrderID while @@FETCH_STATUS = 0 --返回被 FETCH语句执行的最后游标的状态-- BEGIN if @temp <> @operationID BEGIN SET @temp=@operationID set @a=1 end update WorkStepInfo set workOrderID=@a where workStepInfoID=@workStepInfoID set @a=@a+1 set @error= @error + @@ERROR --记录每次运行sql后是否正确,0正确 fetch next from order_cursor into @operationID,@workStepInfoID,@workOrderID --转到下一个游标 end if @error=0 begin commit tran --提交事务 PRINT '执行成功' end else begin rollback tran --回滚事务 PRINT '执行失败' end close order_cursor --关闭游标 deallocate order_cursor --释放游标

 

转载于:https://www.cnblogs.com/xls0517/p/9875056.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值