26 Nisan 2018 Perşembe

@@Error fonksiyonu

@@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ı


Daha oluşmamış yani var olmayan bir tabloyu sorgularsak, olmadığı için hata alırız. Bu işlemi birlikte yapalim.


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.


Kaynak : Microsoft


@@Error fonksiyonu

Hiç yorum yok:

Yorum Gönder