@@Error fonksiyonu sql dili içerisinde önemli sql fonksiyonlarındandır. Sql server‘ın verdiği hatayı tespit edebilmek için kullanılır. Tablolarda yapacağımız sorgularda yada üreteceğimiz prosedür yada triger kullanımlarında verilen hatayı yakalayabilmek için bir değişken kullanıp, verilen hata kodunu o değişkene atarak hatanın sahip olduğu, hatanın numarasını seçebileceğiz. @@ ERROR sorgulama process işlemi satır satır yürüdüğünden silinmektedir. Bu sebeple yürütülen her bir ifadede sıfırlandığından, doğrulanan hatayı bir değişkene atayarak, değişkeni sorgulamalıyız. Sorgulama bittiğinde @@Error fonksiyonu sıfır değerini döndürecektir.
@@Error kullanımı
Kullanılan T-SQL sorgulamasının hata numarasını döndürmek için aşağıdaki gibi bir örnek kullanımı mümkündür. Geri dönen veri tipleri integer veri türündendir.
@@ERROR
Geri Dönüş
Eğer @@Error fonksiyonu kullanımından önce bir sorgulamanız var ise, bu sorgulamada @@Error fonksiyonu kullanmadıysanız ve önceki bölümden gelen hatalardan kaynaklı bir problem oluşmuşsa @@ERROR fonksiyonu sıfır değeri döndürecektir. Hata, sys.messages katalog görünümündeki hatalardan biriyse, bu hata için @@ ERROR, sys.messages.message_id sütunundaki değeri içerir. Sys.messages’da bir @@ ERROR hata numarasıyla ilişkili içeriği döndürür.
Eğer daha fazla hata kontrolü yapmak isterseniz TRY CATCH bloğunu kullanabilirsiniz. Try Catch bloğu bize @@ERROR fonksiyonundan çok daha fazla bilgi vermektedir. Try catch bloğu daha ayrıntılı ve veriye dönük rapor ve hata bilgileri verdiği için. veri kaynaklı hata kontrollerini yapmak daha kolay olacaktır. Ayrıca Try Catch bloğu bize aşağıdaki fonksiyonlarında desteklediğini bilmeliyiz.
(ERROR_LINE, ERROR_MESSAGE, ERROR_PROCEDURE, ERROR_SEVERITY ve ERROR_STATE)
@@Error Örnek Kullanımı
DECLARE
@HataNo
INT
;
DROP
TABLE
OlmayanTablo;
SET
@HataNo = @@ERROR;
IF @HataNo > 0
BEGIN
PRINT
"Hata Var ve hata hatano değişkenine atandı"
PRINT @HataNo ;
PRINT
"Hata Var ama error fonksiyonu sıfırlanmış olacaktır"
PRINT @@ERROR;
END
;
Görüldüğü gibi olmayan tabloyu drop etmeye yani kaldırmaya çalıştığımızda bize hata verdi. Bu hatayı @HataNo değişkeni alıp ekrana yazdırdığımızda hatayı numarasını almış olacağız. Ancak @@Error fonksiyonunun değerini ekrana yazdırdığımızda bize sıfır değerini döndürmüş. Bunun sebebi SQL server kodları satır satır çalıştırırken, başka hata olup olmadığını anlamak için, @@Error değişkenini sıfırlıyor ki bir sonraki hata numarasını @@Error değişkenine atayabilmesi için. Biz de bu noktada yerel bir değişken ile @@Error değişkenine gelen hata numarasını @Hatano değişkenine atadık.
@@Error fonksiyonu
Hiç yorum yok:
Yorum Gönder