Sql 为什么要回滚而不是通过在catch子句中写入return来退出会话?

Sql 为什么要回滚而不是通过在catch子句中写入return来退出会话?,sql,transactions,return,try-catch,rollback,Sql,Transactions,Return,Try Catch,Rollback,也许我在想具体的问题,但我无法得到以下问题的满意答案: 如果我有一个事务,包装在一个try块中,它可能会失败,我希望回滚, 我是否可以或不应该通过挡块中的返回退出? 据我所知,如果会话退出,SQL SERVER无论如何都会回滚该事务 这样的存储过程将通过SSIS包执行 我必须发布回滚吗?SSI可能会等待更长时间的返回 结构如下: CREATE PROCEDURE [example] AS SET NOCOUNT, XACT_ABORT ON; --Best Practise: message

也许我在想具体的问题,但我无法得到以下问题的满意答案:

如果我有一个事务,包装在一个try块中,它可能会失败,我希望回滚, 我是否可以或不应该通过挡块中的返回退出? 据我所知,如果会话退出,SQL SERVER无论如何都会回滚该事务

这样的存储过程将通过SSIS包执行

我必须发布回滚吗?SSI可能会等待更长时间的返回

结构如下:

CREATE PROCEDURE [example]
AS

SET NOCOUNT, XACT_ABORT ON;  --Best Practise: messages from SP are are disabled; XACT_ABORT every failure results in rollback;


BEGIN TRY
---------------------------------------------------------------------------------------------------------
    BEGIN TRANSACTION
---------------------------------------------------------------------------------------------------------

 -----------------Update---------------------------------------------------------------------------------

    UPDATE [example]

-----------Inserts---------------------------------------------------------------------------------------


        INSERT INTO [Stg].[example]

---------------------------------------------------------------------------------------------------------
    COMMIT TRANSACTION
--------------------------------------------------------------------------------------------------------- 

---------------------------------------------------------------------------------------------------------
END TRY 
---------------------------------------------------------------------------------------------------------
BEGIN CATCH
---------------------------------------------------------------------------------------------------------
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION
END;

-------------------------------------------------------------------------------------------------------- 
END CATCH

SET NOCOUNT, XACT_ABORT OFF;

我的替代捕获块是:

BEGIN CATCH

RETURN

END CATCH