Merhaba;
Bu yazımda sizlere TSQL – MSSQL’de RAISERROR kullanımından temel seviyede bahsedeceğim.
RAISERROR, SQL Server’da bir hata mesajı oluşturmak ve kullanıcıya göstermek için kullanılan bir T-SQL ifadesidir. Bu ifade, uygulama geliştiricilerinin belirli koşullar altında hata durumlarını tanımlamalarını ve bu hataları uygun şekilde işlemelerini sağlıyor.
Sektörel racona göre kısaca T-SQL’de ekrana hata basmak için kullanılır diyebiliriz 🙂
RAISERROR ifadesinin temel kullanımı şu şekildedir:
RAISERROR (message, severity, state);
- message: Oluşturulacak hata mesajıdır. Bu, kullanıcıya gösterilecek metni içerir.
- severity: Hatanın ciddiyet düzeyini belirten bir sayıdır. Bu, hatanın ne kadar ciddi olduğunu ve hata mesajının nasıl işleneceğini belirler. Ciddiyet düzeyi, 0 ile 25 arasında bir değer alabilir. Genel olarak:0-10: Bilgi amaçlı hatalar, genellikle uyarılar için kullanılır.11-16: Hafif hatalar, uygulamanın çalışmaya devam etmesine izin veren hatalar için kullanılır.17-25: Ciddi hatalar, uygulamanın çalışmasını durdurabilecek hatalar için kullanılır.
- state: Hatanın durumunu belirten bir sayıdır. Genellikle 1 ile 255 arasında bir değer alır.
DECLARE @Sayi INT = 10;
IF @Sayi> 5
BEGIN
SELECT 'Sayı 5 ten büyük.';
END
ELSE
BEGIN
DECLARE @UyariMesaji NVARCHAR(1000);
SET @UyariMesaji = 'Sayı 5 ten küçük veya eşit.';
RAISERROR(@UyariMesaji, 16, 1);
END
Bu örnekte, “Sayi” adında bir değişken oluşturulur ve değeri 10 olarak atanır. Ardından, IF koşulu ile bu değişkenin 5’ten büyük olup olmadığı kontrol edilir. Eğer değişken 5’ten büyükse, SELECT ifadesi kullanılarak bir mesaj bastırılır. Eğer değişken 5’ten küçük veya eşitse, RAISEERROR fonksiyonu çağrılarak bir hata mesajı oluşturulur ve 16 numaralı bir ciddiyet seviyesi ile 1 numaralı bir durum belirtilir. Bu sayede, hata mesajı kullanıcıya gösterilir ve uygulamanın devam etmesi engellenir.
RAISEERROR fonksiyonu, sadece T-SQL içinde değil, aynı zamanda trigger’lar, stored procedure’lar ve fonksiyonlar gibi diğer MSSQL nesnelerinde de kullanılabilir. Trigger’lar aracılığıyla, belirli bir olay gerçekleştiğinde hatalar bildirilebilir ve işlem durdurulabilir. Stored procedure’lar içinde ise, karmaşık iş mantığı veya veri doğrulama kuralları uygulanabilir ve hata durumlarında ekrana uygun mesajlar bastırılabilir.
Kendi hata mesajınızı oluşturabilmeniz ve ön tanımlı hale getirebilmeniz için “sp_addmessage” prosedürünü aşağıda gösterdiğim şekilde kullanabilirsiniz.
EXEC sp_addmessage @msgnum = 50001,
@severity = 16,
@msgtext = N'Bu özel bir hata mesajıdır.',
@lang = 'Turkish',
@with_log = 'TRUE';
- message_number: Tanımlanacak hata mesajının numarasını belirtir. Bu numara 50000’den küçük olmalıdır ve kullanıcının tanımladığı hata mesajları için 50000’den büyük bir değer kullanılması önerilir.
- severity: Hatanın ciddiyet düzeyini belirtir. Bu, hata mesajının ne kadar ciddi olduğunu belirler ve hata raporlamasının nasıl yapılacağını etkiler. 0 ile 25 arasında bir değer alabilir.
- message: Tanımlanacak hata mesajının metnidir.
- language: Hata mesajının dilini belirtir. Varsayılan olarak, SQL Server’ın varsayılan diline göre oluşturulur.
- log: ‘TRUE’ olarak belirtilirse, hata mesajı SQL Server’ın hata günlüğüne kaydedilir.
Örnek bir hata mesajı tanımlayalım;
EXEC sp_addmessage 50001, 16, 'Bu ön tanımlı bir hata mesajıdır.', 'Turkish', 'TRUE';
Bu örnekte 50001 numaralı bir hata mesajı tanımladık. 50001 rakamına dikkat çünkü SQL ön tanımlı mesajların 50000’den büyük olmasını istiyor.
Severity (ciddiyet seviyesi) 16 olarak belirtildi ve message olarak hata mesajının açıklamasını yazdık. Türkçe olduğunu belirttik ve TRUE parametresini vererek SQL log kayıtlarına da yazılmasını istedik.
Raiserror ve sp_addmessage hakkında bilinmesi gereken en temel konular şimdilik bu kadar..
Saygılar.









