Bad practice to use SQL Server's GOTO for error handling? Bad practice to use SQL Server's GOTO for error handling? sql-server sql-server

Bad practice to use SQL Server's GOTO for error handling?


You should be using Try/Catch in SQL 2005+

BEGIN TRY    BEGIN TRAN    UPDATE Authors    SET Phone = '415 354-9866'    WHERE au_id = '724-80-9391'    UPDATE Publishers    SET city = 'Calcutta', country = 'India'    WHERE pub_id = '9999'    COMMIT TRAN        END TRYBEGIN CATCH    PRINT 'Unexpected error occurred!'    IF XACT_STATE() <> 0        ROLLBACK TRAN    END CATCH


You must incorporate SET XACT_ABORT ON in Exception handling

Begin TrySET XACT_ABORT ONBEGIN TRAN    UPDATE Authors    SET Phone = '415 354-9866'    WHERE au_id = '724-80-9391'    UPDATE Publishers    SET city = 'Calcutta', country = 'India'    WHERE pub_id = '9999'COMMIT TRANEnd TryBegin Catch    Rollback TranEnd Catch