T-SQL Fonksiyon, SQL Server tarafında tanımlı SYSTEM_USER, JSON_ARRAY, SUM, COUNT, AVG, DATEADD, fonksiyonlar olduğu gibi bizim tarafında oluşturacağımız fonksiyonun alacağı parametrelere göre işleyip geriye bir değer döndürebiliriz.
Fonksiyon (Function) Nasıl Oluşturulur?
Object Explorer Bölümünden Table, Scalar-Valued Function hazır create script oluşturma ile oluşturabilirsiz. Diğer yöntem ise New query ile kendiniz script yazarak oluşturabilirsiniz.
Öğrenci puana göre derecelendirme
Öğrenci notlarını bir derecelendirme yapalım. Öğrencinin almış olduğu puana göre ekrana derece notunu yazdıralım.
Create Funtcion – Script
CREATE FUNCTION NotDerecelendirme --Func. isim veriyoruz.(
@Puan INT --Veri tipi, Sayısal(INT) değeri alacak şekilde @Puan isimli değişken oluşturuyoruz.
)
RETURNS NVARCHAR(15) --Geriye döndürülecek olan (yani derece söyleyeceği zaman) Veri tipi Metin (string) olacağını söylüyoruz.
AS
BEGIN
RETURN (-- Case When koşuluna uygun bir değeri bize geri döndürücek
SELECT CASE
WHEN @Puan BETWEEN 85 AND 100 THEN '5 - Pekiyi'
WHEN @Puan BETWEEN 70 AND 84 THEN '4 - İyi'
WHEN @Puan BETWEEN 55 AND 69 THEN '3 - Orta'
WHEN @Puan BETWEEN 45 AND 54 THEN '2 - Geçer'
WHEN @Puan BETWEEN 25 AND 44 THEN '1 - Geçmez'
WHEN @Puan BETWEEN 0 AND 43 THEN '0 - Etkisiz'
ELSE 'Belirsiz' --Yukarda şartlarından biri uymuyorsa Belirsiz olarak set ediyoruz.
END AS Derece --"Derece" bir takma adı verdik.
)
END
GO
Kullanım örnekleri
--Hatalı kullanım örneği, EXEC komutunun bir fonksiyonun sonucunu doğrudan döndürmemesidir. Bunun yerine, fonksiyonun sonucunu bir değişkene atayıp bu değişkeni döndürmelisiniz.
EXEC dbo.NotDerecelendirme @Puan=1
--Kullanım örnekleri
SELECT dbo.NotDerecelendirme(96);
--Diğer kullanım örneği
DECLARE @Sonuc NVARCHAR(15);
SET @Sonuc = dbo.NotDerecelendirme(45);
SELECT @Sonuc AS Derece;
Kaynak
- Microsoft – Functions
- Başlangıç seviyesi için String Functions microsoft yazısını göz atmanızı tavsiye ederim.
- Create Function