TRY...CATCH... Bloğu
Try…catch .. hata kontrolünde kullanılır. Sql 2005’den sonraki sürümlerde vardır. Bunun alternatifi @@error değişkenidir.
Blok yapısı
BEGIN TRY
...
... (hata yokken çalışan kodlar)
...
END TRY
BEGIN CATCH
... (hata oluştuğunda çalışan kodlar)
END CATCH
If içinde birden fazla sql komutu bulunacak ise bu komutlar BEGIN ... END arasına konur
Çalışma mekanizması
Try bloğu içinde herhangi satırda hata oluştuğunda devamındaki satırlar çalışmadan, program akışı catch bloğuna geçer. Try içinde hata yoksa try bloğu sonuna kadar çalışır ve catch bloğu içine girilmez.
Örnek:
BEGIN TRY
BEGIN TRAN
Delete from tbl_personel where bolum=10
Update tbl_personel set maas=1000 where bolum=12
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
END CATCH
Yukarıdaki kodda try bloğu içinde normalde çalışacak kod vardır. Begin tran ile transaction başlatılıyor. Devamındaki delete ve update kodları çalışıyor.
Eğer delete ve update kodunda hata oluşmaz ise, commit tran çalışarak işlem tamamlanıyor. Eğer kodda yer alan delete veya update kodunda hata olursa,
devamındaki kod çalışmadan, akış catch bloğuna geçer, catch bloğunda bulunan rollback tran çalışarak, o ana kadar yapılan değişiklikler geri alınmış olur.