29 Ekim 2010 Cuma

TRY - CATCH ve TRANSACTION kullanımı

Try Catch yapısını, transactionlar ile kullanmak hem yapılan kontrol sayısını azaltır, hem de daha anlaşılır bir kod yazmanızı sağlar.

Try Catch kullanılmazsa (SQL 2005 öncesi versiyonlarda zaten try catch olmadığı için mecburan) her bir statementdan sonra @@Error den gelen hata kodunu bir değişkene atmanız, bir sorun varsa rollback yoksa kodun devam etmesi veya commit etmesi için if cümleleri ile uğraşmanız gerekir. 

TRY/CATCH ile hataları yönetmek ve transactionlar ile çalışmak daha da kolaylaştı.
İşte birkaç örnek.

DECLARE @ErrorNumber int = 0 , @ErrorMessage nvarchar(max)

BEGIN TRANSACTION
BEGIN TRY

END TRY
BEGIN CATCH

SELECT @ErrorNumber = ERROR_NUMBER(), @ErrorMessage = ERROR_MESSAGE()
END CATCH

IF @ErrorNumber<>0
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION


-------------------------------


DECLARE @ErrorNumber int = 0 , @ErrorMessage nvarchar(max)

BEGIN TRANSACTION
BEGIN TRY

  COMMIT TRANSACTION
END TRY
BEGIN CATCH
    SELECT @ErrorNumber = ERROR_NUMBER(), @ErrorMessage = ERROR_MESSAGE()
    IF @@TRANCount>0 ROLLBACK TRANSACTION
END CATCH

Hiç yorum yok: