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
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?






