Fonksiyon Nedir? Basit Fonksiyon nasıl oluşturulur? – 1

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.

T-SQL - Object Explorer, Seçili bir veritabanı ile fonksiyon nasıl oluşturulur?

Öğ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;
sql fonksiyon nasıl kullanılır

Kaynak

Göz atmak isteyebileceğiniz diğer yazılarım

Leave a Reply