XACT_ABORT示例一则

发布时间 2023-08-18 13:29:24作者: Shapley
CREATE PROC dbo.proc1
AS
SET XACT_ABORT ON;
BEGIN TRY
	BEGIN TRAN
    --body;
	COMMIT
END TRY
BEGIN CATCH
	DECLARE 
		@ErrorNumber int
                ,@ErrorSeverity int
                ,@ErrorState int
                ,@ErrorMessage nvarchar(2048);
	IF @@TRANCOUNT > 0 ROLLBACK;
    SELECT
        @ErrorNumber = ERROR_NUMBER()
        ,@ErrorSeverity = ERROR_SEVERITY()
        ,@ErrorState = ERROR_STATE()
        ,@ErrorMessage = ERROR_MESSAGE();
	RAISERROR('Error number %d caught: %s', @ErrorSeverity, @ErrorState, @ErrorNumber, @ErrorMessage);
END CATCH
GO