-
-
Save yzorg/55e30c2288bc41cb9a8b5a28d66d07fa to your computer and use it in GitHub Desktop.
SQL TRY-CATCH WITH TRANSACTION
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CREATE PROCEDURE [dbo].[spTxnDemo] | |
@debug int = NULL | |
, @forceError int = NULL | |
AS | |
BEGIN | |
SET NOCOUNT ON; | |
SET @debug = ISNULL(@debug, 0); | |
SET @forceError = ISNULL(@forceError, 0); | |
BEGIN TRY | |
BEGIN TRANSACTION MY_TXN; | |
IF (ISNULL(@forceError, 0) > 0) | |
SELECT 1/0 -- Generates divide by zero error causing control to jump into catch | |
IF @debug > 0 | |
PRINT '>> COMMITTING' | |
COMMIT TRANSACTION MY_TXN; | |
END TRY | |
BEGIN CATCH | |
IF @@TRANCOUNT > 0 | |
BEGIN | |
IF @debug > 0 | |
PRINT '>> ROLLING BACK' | |
ROLLBACK TRANSACTION MY_TXN; | |
END; | |
THROW; | |
END CATCH | |
END |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment