zoukankan      html  css  js  c++  java
  • SQL中循环的实现方式

    一、第一种方法,游标

    定义游标 DECLARE cur_ClubHeadCash CURSOR FAST_FORWARD READ_ONLY FOR,循环每行 FETCH NEXT FROM cur_ClubHeadCash INTO @intUserID, @Clubid, @Amount

    DECLARE @intUserID INT,@Amount INT, @Clubid INT,@AmountTmp INT
    
    DECLARE cur_ClubHeadCash CURSOR FAST_FORWARD READ_ONLY FOR
    SELECT userid,cid,cash FROM #temp WHERE userid not in(1000882)  ORDER BY userid ASC
    
    OPEN cur_ClubHeadCash
    FETCH NEXT FROM cur_ClubHeadCash INTO @intUserID, @Clubid, @Amount
    
    WHILE @@FETCH_STATUS = 0
    BEGIN
        PRINT @intUserID
        PRINT @Clubid
        PRINT @Amount
        
        SET @AmountTmp= @Amount*-1
        PRINT @AmountTmp
        
        --EXEC dbo.PrPsWeb_UpdateClubCash 
        --                @Clubid,
        --                13001,
        --                @AmountTmp,
        --                '127.0.0.1',
        --                '管理员减少房卡',
        --                NULL,
        --                0
            
        --EXEC dbo.PrPsWeb_UpdateUserCash
        --            @intUserID,
        --            13000,
        --            @Amount,
        --            '127.0.0.1',
        --            '管理员增加金币',
        --            NULL,
        --            0        
                    
        FETCH NEXT FROM cur_ClubHeadCash INTO @intUserID,@Clubid,@Amount
        
    END
    
    CLOSE cur_ClubHeadCash
    DEALLOCATE cur_ClubHeadCash
    
    DROP TABLE #temp

    二、第二种方法,while循环

    获取需处理表的所有行以及行号,取最小行号min和最大行号max,进行循环

    DECLARE @intMinId INT,@intMaxId INT,@intClubID INT,@lngUpdateAmount BIGINT
    
    SELECT RowID=IDENTITY(INT,1,1),A.ClubID,A.NeedAmount
    INTO #templist 
    FROM Game.UserCreateClubDesk AS A WHERE A.ServerID=@intServerID
    
    SELECT @intMinId =MIN(RowID),@intMaxId=MAX(RowID) 
    FROM #templist
    
    WHILE @intMinId<=@intMaxId
    BEGIN
        SELECT @intClubID=ClubID,@lngUpdateAmount=NeedAmount 
        FROM #templist WHERE RowID=@intMinId
        EXEC dbo.PrPsWeb_UpdateClubCash 
                    @intClubID,
                    @sintSourceType,
                    @lngUpdateAmount,
                    '127.0.0.1',
                    @chvMemo,
                    NULL,
                    0
        SET @intMinId=@intMinId+1
    END
    DROP TABLE #templist
  • 相关阅读:
    微信公众号支付,iframe跨域
    QQ小程序
    米大师支付
    window下安装phalcon
    laravel 控制器多个方法共用一个路由
    Elasticsearch查询语法
    【机器学习基础】相似度计算之杰卡德相似度
    【机器学习基础】相似度计算之Dice系数
    【leetcode_medium】54. Spiral Matrix
    【leetcode_easy】1189. Maximum Number of Balloons
  • 原文地址:https://www.cnblogs.com/alqscool/p/7921736.html
Copyright © 2011-2022 走看看