T-SQL Tablo Tipli Fonksiyonlar

T-SQL Tablo Tipli Fonksiyonlar Nedir? T-SQL Tablo Tipli Fonksiyonlar Nasıl Kullanılır?

T-SQL Tablo Tipli Fonksiyonlar

T-SQL Tablo Tipli Fonksiyonlar

Geriye tablo gönderen fonksiyonlardır.

Kullanımı:

CREATE FUNCTION Fonksiyon_Adı (dışarıdan gönderilen parametre)
RETURNS Tablo_adı TABLE (
	alan1 tipi
	,alan2 tipi…..
	)
AS
BEGIN
	T_SQL kodu

	RETURN
END

Örnek: Öğrencilerin başarılarını ders bazlı listeleyen tablo tipli fonksiyon yazalım.

ALTER FUNCTION [dbo].[FN_NotSiralamasi] ()
RETURNS @Notlar TABLE (
	ogrid INT
	,dersid INT
	,vize FLOAT
	,final FLOAT
	,but FLOAT
	,ortalama FLOAT
	,basari_sirasi INT
	,durumu NVARCHAR(10)
	,harfnotu NVARCHAR(5)
	)
AS
BEGIN
	DECLARE @ogrid INT
		,@dersid INT
		,@vize FLOAT
		,@final FLOAT
		,@but FLOAT
		,@ortalama FLOAT
		,@basari_sirasi INT
		,@durumu NVARCHAR(10)
		,@harfnotu NVARCHAR(5)
	DECLARE @oncekiders INT

	DECLARE DersKayitlari CURSOR FAST_FORWARD
	FOR
	SELECT ogr_id
		,dersid
		,vize
		,final
		,but
		,[dbo].[FN_OrtalamaBul](vize, final, but) AS ortalama
		,[dbo].[FN_Durumu](vize, final, but) AS durumu
		,[dbo].[FN_HarfNotu](vize, final, but) AS harfNotu
	FROM OgrDersleri
	ORDER BY dersid
		,ortalama DESC

	OPEN DersKayitlari

	FETCH NEXT
	FROM DersKayitlari
	INTO @ogrid
		,@dersid
		,@vize
		,@final
		,@but
		,@ortalama
		,@durumu
		,@harfnotu

	SET @basari_sirasi = 0

	WHILE (@@FETCH_STATUS = 0)
	BEGIN
		SET @basari_sirasi = @basari_sirasi + 1

		INSERT INTO @Notlar
		VALUES (
			@ogrid
			,@dersid
			,@vize
			,@final
			,@but
			,@ortalama
			,@basari_sirasi
			,@durumu
			,@harfnotu
			)

		SET @oncekiders = @dersid

		FETCH NEXT
		FROM DersKayitlari
		INTO @ogrid
			,@dersid
			,@vize
			,@final
			,@but
			,@ortalama
			,@durumu
			,@harfnotu

		IF (@oncekiders != @dersid)
			SET @basari_sirasi = 0
	END

	CLOSE DersKayitlari

	DEALLOCATE DersKayitlari

	RETURN
END

Tepkiniz Nedir?

like

dislike

love

funny

angry

sad

wow