1

TSQL カーソルの無限ループに関する興味深い問題があります。TOP 300 をカーソルの select ステートメントの定義に追加しないと、カーソルが無限にループします。以下は、コードの例です: この問題への支援は大歓迎です。

DECLARE @Done BIT
SET @Done = 0

DECLARE cursOut CURSOR LOCAL FAST_FORWARD
FOR
SELECT
    --TOP 300
    FirstName FirstName
    ,LastName LastName
    ,MiddleName MiddleName
    ,Email Email
    ,Address1 Address1
    ,Address2 Address2
    ,City City
    ,[State] [State]
       FROM StagedUsers

OPEN cursOut;

WHILE (@Done = 0)
   BEGIN       
 --Fetch next row
    FETCH NEXT
    FROM cursOut
    INTO ,@v_FirstName
        ,@v_LastName
        ,@v_MiddleName
        ,@v_Email
        ,@v_Address1
        ,@v_Address2
        ,@v_City
        ,@v_State

    IF (@@FETCH_STATUS <> 0)
    BEGIN
        SET @Done = 1
        BREAK
    END

    --if @batch = 0
    BEGIN TRANSACTION

    --process statements
    --updates or insert statements


    --Commit transaction    
    COMMIT TRANSACTION

--End While             
    END 


--CleanUp:
CLOSE cursOut
DEALLOCATE cursOut

ありがとう、レネグリン

4

1 に答える 1