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
  • 相关阅读:
    使用FolderBrowserDialog组件选择文件夹
    使用OpenFileDialog组件打开多个文
    使用OpenFileDialog组件打开对话框
    获取弹出对话框的相关返回值
    PAT 甲级 1139 First Contact (30 分)
    PAT 甲级 1139 First Contact (30 分)
    PAT 甲级 1138 Postorder Traversal (25 分)
    PAT 甲级 1138 Postorder Traversal (25 分)
    PAT 甲级 1137 Final Grading (25 分)
    PAT 甲级 1137 Final Grading (25 分)
  • 原文地址:https://www.cnblogs.com/alqscool/p/7921736.html
Copyright © 2011-2022 走看看