SQLServer游标的使用,读取表数据赋值循环

发布时间 2023-09-11 20:08:29作者: 泥称
    --声明一个游标
    --定义一个叫Cursor_temp的游标,存放FOR SELECT 后的数据
    DECLARE Cursor_temp CURSOR
    FOR
    SELECT Id,Code FROM TableName

    --打开一个游标
    OPEN Cursor_temp

    DECLARE 
        @ID uniqueidentifier,
        @Code nvarchar(50);

    --循环一个游标
    --移动游标指向第一条数据,提取第一条数据存放在变量中
    FETCH NEXT FROM Cursor_temp INTO @ID,@Code

    --如果上一次游标操作成功则继续循环
    WHILE @@FETCH_STATUS =0
    BEGIN
        BEGIN TRY
            --处理上次提取的游标数据
            --编写处理代码--

            PRINT(@Code)

            --提取下一行数据,分开两次代码提取,为了方便While判断@@FETCH_STATUS
            FETCH NEXT FROM Cursor_temp INTO @ID,@Code 
        END TRY

        BEGIN CATCH
                SELECT ERROR_NUMBER() errorNumber,        --错误代码
                       ERROR_SEVERITY() errorSeverity,    --错误严重级别,级别小于10 try catch 捕获不到
                       ERROR_STATE() errorState,        --错误状态码
                       ERROR_PROCEDURE() errorProcedure,    --出现错误的存储过程或触发器的名称
                       ERROR_LINE() errorLine,        --发生错误的行号
                       ERROR_MESSAGE() errorMessage        --错误的具体信息
                PRINT ERROR_MESSAGE()                    --错误的具体信息

                --处理异常
                ;THROW

        END CATCH
    END