Skip to content

Instantly share code, notes, and snippets.

@yzorg
Forked from mishrsud/trycatchtran.sql
Last active June 19, 2020 12:58
Show Gist options
  • Save yzorg/55e30c2288bc41cb9a8b5a28d66d07fa to your computer and use it in GitHub Desktop.
Save yzorg/55e30c2288bc41cb9a8b5a28d66d07fa to your computer and use it in GitHub Desktop.
SQL TRY-CATCH WITH TRANSACTION
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