Estaba leyendo sobre el manejo de errores en SQL Server en this article, y sugieren usar el GOTO de SQL Server en ciertas situaciones para deshacer la transacción. Ejemplo:¿Una mala práctica para usar el GOTO de SQL Server para el manejo de errores?
BEGIN TRAN
UPDATE Authors
SET Phone = '415 354-9866'
WHERE au_id = '724-80-9391'
SELECT @intErrorCode = @@ERROR
IF (@intErrorCode <> 0) GOTO PROBLEM
UPDATE Publishers
SET city = 'Calcutta', country = 'India'
WHERE pub_id = '9999'
SELECT @intErrorCode = @@ERROR
IF (@intErrorCode <> 0) GOTO PROBLEM
COMMIT TRAN
PROBLEM:
IF (@intErrorCode <> 0) BEGIN
PRINT 'Unexpected error occurred!'
ROLLBACK TRAN
END
Este artículo fue escrito hace casi 10 años y he oído que por lo general es una mala idea usar GOTO. ¿Es lo anterior un método correcto para el manejo de errores en SQL Server? Si no, ¿alguien puede sugerir una mejor alternativa?
¿Ha comprobado esta [respuesta] (http://stackoverflow.com/a/ 11153012/1451723)? – Pankaj