• As going through the examples keeps your mind active I just came with the idea of an alternative style of error handling.

    One that combines the two mentioned in the Article:

    It avoids using GO TO and it allows the use of the copy and paste approach:

    DECLARE @myErr TABLE(err int)

    BEGIN TRAN

    INSERT INTO City SELECT 'Anchorage', 'AK'

    INSERT INTO @myErr SELECT @@ERROR

    INSERT INTO City SELECT 'Los Angles', 'CA'

    INSERT INTO @myErr SELECT @@ERROR

    INSERT INTO City SELECT 'San Juan', 'PR' --Puerto Rico isn't in our State table

    INSERT INTO @myErr SELECT @@ERROR

    INSERT INTO City SELECT 'Topeka', 'KS'

    INSERT INTO @myErr SELECT @@ERROR

    IF (SELECT MAX(err) FROM @myErr) = 0

    COMMIT

    ELSE

    ROLLBACK