如果事务失败,如何使控制从内循环移动到外循环

时间:2011-09-13 22:27:19

标签: sql-server-2008

我在内循环中嵌套了带有事务的while循环,例如:

WHILE -- A
BEGIN
    WHILE -- B
    BEGIN
        -- tx here
    END
END

如果事务失败,我需要将控制从内部循环(B)转移到外部循环(A)。

1 个答案:

答案 0 :(得分:3)

显然是伪的,但重要的部分是BREAK;在CATCH内。但是,它的行为方式将取决于实际故障的错误级别/严重程度。

WHILE ...
BEGIN
    WHILE ...
    BEGIN
        BEGIN TRY
            -- attempt tx here
        END TRY
        BEGIN CATCH
            BREAK; -- this will bring you back to outer while
        END CATCH
    END
END

P.S。关于错误处理的绝对圣经是由Erland Sommarskog编写的,你一定要把它放在你的书签中:

http://www.sommarskog.se/error_handling_2005.html