T-SQL Kullanıcı Tanımlı Fonksiyonlar

T-SQL Kullanıcı Tanımlı Fonksiyonlar Nedir? T-SQL Kullanıcı Tanımlı Fonksiyonlar Nasıl Oluşturulur? T-SQL Kullanıcı Tanımlı Fonksiyonlar Nasıl Kullanılır? Gibi tüm sorularınızın cevabını bu konumuzda bulabilirsiniz.

T-SQL Kullanıcı Tanımlı Fonksiyonlar

T-SQL Kullanıcı Tanımlı Fonksiyonlar

Tanımlı fonksiyonlar dışında kullanıcılar da fonksiyon tanımlayabilir.

CREATE FUNCTION Fonksiyon_adi (
	@parametre1 tipi
	,@parametre2 tipi..
	)
RETURNS donendegerin_tipi
AS
BEGIN
	--TSQL kodları
	RETURN dönecek_deger
END

Örnek: Öğrencilerin aldığı dersleri ve ortalamasını fonksiyon tanımlayarak bulan T-SQL kodunu yazalım.

CREATE FUNCTION FN_Ortalama (
	@vize FLOAT
	,@final FLOAT
	)
RETURNS FLOAT
AS
BEGIN
	DECLARE @ort FLOAT

	SET @ort = @vize * 0.4 + @final * 0.6

	RETURN @ort
END

Sorgu:

SELECT adi, dadi, vize, final, [dbo].[FN_Ortalama](vize, final) AS ortalama FROM OgrenciTanim
INNER JOIN OgrDersleri ON OgrenciTanim.ogrid = OgrDersleri.ogrid

Örnek: Öğrencilerin aldığı dersleri ve ortalamasını, durumunu ve harf notunu ayrı ayrı fonksiyon tanımlayarak öğrenci ders biligilerini listeleyen T-SQL kodunu yazalım.

CREATE FUNCTION [dbo].[FN_Durumu] (@vize FLOAT, @final FLOAT)
RETURNS NVARCHAR(10)
AS
BEGIN
	DECLARE @ort FLOAT
	DECLARE @durumu NVARCHAR(10)

	SET @ort = @vize * 0.4 + @final * 0.6

	IF @ort >= 55
		SET @durumu = 'Geçti'
	ELSE
		SET @durumu = 'Kaldı'

	RETURN @durumu
END

CREATE FUNCTION FN_HarfNotu (
	@vize FLOAT
	,@final FLOAT
	)
RETURNS NVARCHAR(5)
AS
BEGIN
	DECLARE @ort FLOAT
	DECLARE @harfNotu NVARCHAR(10)

	SET @ort = @vize * 0.4 + @final * 0.6

	IF @ort > 0
		AND @ort < 40
		SET @harfNotu = 'FF'
	ELSE IF @ort >= 40
		AND @ort < 55
		SET @harfNotu = 'DD'
	ELSE IF @ort >= 55
		AND @ort < 70
		SET @harfNotu = 'CC'
	ELSE IF @ort >= 70
		AND @ort < 85
		SET @harfNotu = 'BB'
	ELSE IF @ort >= 85
		AND @ort < 100
		SET @harfNotu = 'AA'
	ELSE
		SET @harfNotu = ''

	RETURN @harfNotu
END

Sorgu:

SELECT adi, dadi, vize, final, [dbo].[FN_Ortalama](vize, final) AS ortalama, [dbo].[FN_durumu](vize, final) AS ortalama, [dbo].[FN_HarfNotu](vize, final) AS harfnotu FROM OgrenciTanim
INNER JOIN OgrDersleri ON OgrenciTanim.ogrid = OgrDersleri.ogrid

Tepkiniz Nedir?

like

dislike

love

funny

angry

sad

wow