Czytałem o obsłudze błędów w SQL Server w this article i sugerują one użycie GOTO programu SQL Server w niektórych sytuacjach do wycofania transakcji. Przykład:Zła praktyka używania GOTO programu SQL Server do obsługi błędów?
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
Ten artykuł powstał prawie 10 lat temu i słyszałem, że używanie GOTO zazwyczaj jest złym pomysłem. Czy powyższa metoda jest dobra do obsługi błędów w SQL Server? Jeśli nie, czy ktoś może zaproponować lepszą alternatywę?
Sprawdziłeś ten [Odpowiedź] (http://stackoverflow.com/a/ 11153012/1451723)? – Pankaj