循环批量更新的的存储过程(属于转载)

View Code
CREATE PROCEDURE  addusermodule
@ModuleId_Array varChar(2000),
@UserId int
AS
DECLARE @PointerPrev int
DECLARE @PointerCurr int
DECLARE @TId int
Set @PointerPrev=1
set @PointerCurr=1

begin transaction
Set NoCount ON
delete from tests where userid=@UserId

Set @PointerCurr=CharIndex (',',@ModuleId_Array ,@PointerPrev+1)
set @TId=cast (SUBSTRING(@ModuleId_Array,@PointerPrev ,@PointerCurr-@PointerPrev) as int)
Insert into tests (userid,moduleid) Values(@UserId,@TId)
SET @PointerPrev = @PointerCurr
while (@PointerPrev+1 < LEN(@ModuleId_Array))
Begin
Set @PointerCurr=CharIndex( ',',@ModuleId_Array, @PointerPrev+1)
if(@PointerCurr> 0)
Begin
set @TId=cast (SUBSTRING(@ModuleId_Array,@PointerPrev +1,@PointerCurr- @PointerPrev-1) as int)
Insert into tests (userid,moduleid) Values (@UserId,@TId)
SET @PointerPrev = @PointerCurr
End
else
Break
End

set @TId=cast(SUBSTRING(@ModuleId_Array,@PointerPrev+ 1,LEN(@ModuleId_Array )-@PointerPrev) as int)
Insert into tests (userid,moduleid) Values (@UserId,@TId)

delete from tests where moduleid =0
Set NoCount OFF
if @@error= 0
begin
commit transaction
end
else
begin
rollback transaction
end
GO


编辑器加载中...

转载于:https://www.cnblogs.com/mushaobai/archive/2011/12/27/2303068.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值