SQL Server’da Yazım Kontrolü Sağlayan Fonksiyon
Herkese merhaba,
Bu yazıda SQL Server’da yazım kontrolü sağlayan fonksiyon hakkında bilgi vermeye çalışacağım.
Yazım kontrollünden demek istediğim şudur.
Siz bir sorgu yazdınız diyelim ve bunun yazımını yani syntaxını kontrol etmek istiyorsunuz. İşte bu noktada aşağıdaki fonksiyon yardımıyla bu işlemi kolaylıkla yapabilirsiniz.
Ben işlemlerimi Northwind veritabanı kullanarak yaptım. Sizler kendi veritabanınızda deneyebilirsiniz.
CREATE FUNCTION dbo.SorguKontrolu (@p1 VARCHAR (2000))
RETURNS VARCHAR (1000)
AS
BEGIN
DECLARE @Sonuc VARCHAR (1000)
IF EXISTS (
SELECT 1
FROM sys.dm_exec_describe_first_result_set (@p1, NULL, 0)
WHERE [error_message] IS NOT NULL
AND [error_number] IS NOT NULL
AND [error_severity] IS NOT NULL
AND [error_state] IS NOT NULL
AND [error_type] IS NOT NULL
AND [error_type_desc] IS NOT NULL
)
BEGIN
SELECT @Sonuc = [error_message]
FROM sys.dm_exec_describe_first_result_set(@p1, NULL, 0)
WHERE column_ordinal = 0
END
ELSE
BEGIN
SET @Sonuc = 'Sorgu Hatasız'
END
RETURN (@Sonuc)
END
GO
--Tablo Kontrolü
Select dbo.SorguKontrolu ('SELECT * FROM Customers') --Hatasız (Başarılı çalışacaktır.)
Select dbo.SorguKontrolu ('SELECT *, FROM Customers') --Hatalı (Yazım hatası verecektir.)
Select dbo.SorguKontrolu ('SELECT * FROM Customer') --Hatalı (Tabloyu bulamadı hatası verecektir.)
--Tablo Güncelleme Kontrolü
Select dbo.SorguKontrolu ('UPDATE Customers SET Region = '''' Where CustomerID =''ALFKI''') --Hatasız (Başarılı çalışacaktır.)
Select dbo.SorguKontrolu ('UPDATE Customers SET Region = '''' Where CustomerIDS =''ALFKI''') --Hatalı (Kolonu bulamadı hatası verecektir.)
--Prosedür Kontrolü
Select dbo.SorguKontrolu ('EXEC dbo.CustOrderHist "ALFKI"') --Hatasız (Başarılı çalışacaktır.)
Select dbo.SorguKontrolu ('EXEC dbo.CustOrderHistt "ALFKI"') --Hatalı (Prosedürü bulamadı hatası verecektir.)
Fonksiyonu oluşturup sorgulardan herhangi birini çalıştırdığınızda aşağıdakine benzer sonuçlar alacaksınız.
Görüldüğü üzere kontrol sağlanmış oldu.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.