zoukankan      html  css  js  c++  java
  • 循环批量更新的的存储过程(属于转载)

    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


    编辑器加载中...

  • 相关阅读:
    sql语句中in和exists的区别
    springboot整合kafka
    多线程基础(三)线程通信
    多线程基础(四)线程控制
    多线程基础(二)线程状态
    创建计算字段
    MySQL学习之正则表达式篇
    response没有实现跳转,而是提示浏览器下载文件
    AJAX简述
    四大作用域
  • 原文地址:https://www.cnblogs.com/mushaobai/p/2303068.html
Copyright © 2011-2022 走看看