Fonksiyonlar programlamanın önemli bir parçacısıdır.Sürekli tekrar yazmamız gereken kod bloklarını tek bir kod parçasına dönüştürerek işlerimizi kolaylaştırır.Fonksiyonlar tekrar kullanılabilirlik,hızlı erişilebilir ve düzenlenebilir olduğundan dolayı çok faydalıdır.

Sql Serverda 4 çeşit fonksiyon kavramı vardır.Bunlar;

1. Scalar-Valued Function

2. Table-Valued Function

3. Çoklu ifade ile tablo döndüren fonksiyonlar

4. System Function

1.Scalar Fonksiyon

Bu fonksiyon tek bir değer tipinde veri döndürür.

CREATE Function Fn_Çarpma(@sayi1 int,@sayi2 int) 
RETURNS int 
AS
BEGIN
DECLARE @sonuc int
SET @sonuc =  @sayi1+ @sayi2 RETURN @sonuc 
END

Select olarak çağırabilir ve joinlerde kullanabilirsiniz.

Bu şekilde çağırılır.

Select dbo.Fn_Carpma(5,10)

2.Table-Valued Function

Adından belli olduğu gibi tablo döndüren fonksiyonlardır.Uzun çekilen select sorgularına göre sürekli kullanımlar için daha performanslıdır.

CREATE FUNCTION fonksiyonAdi(parametreler) 
RETURNS TABLE 
AS
BEGIN
RETURN Select sorgusu
END

Bu fonksiyon viewlerle benzerlik gösterirler fakat viewler dışardan parametre alamazlar.

Bir örnek yazalım,

USE Kullanicilar
CREATE FUNCTION fn_KullaniciListesi(@kullaniciid tinyint)
RETURNS TABLE
AS
RETURN (select * from Kullanicilar where kullaniciid=@kullaniciid)
END

Fonksiyonu çağırmak için,

SELECT * FROM dbo.KullaniciListesi(5)

Fonksiyonu düzeltmek için,

ALTER FUNCTION dbo.Fn_KullaniciListesi(@kullaniciadi varchar(20))
RETURNS TABLE
AS
RETURN select * from Kullanicilar where=kullaniciadi=@kullaniciadi
END

3.Çoklu ifade ile tablo döndüren fonksiyonlar

Bu türden fonksiyonlar bir öncekine benzer. Farkı dışarıya değer döndüren tablo tanımlanması gereklidir.

USE Kullanicilar
CREATE FUNCTİON fn_KullaniciListe(@kullaniciid tinyint)
RETURNS TABLE
AS
RETURN SELECT * from Kullanicilar where @kullaniciid in(1,2)
END

Fonksiyonu çağırmak için,

SELECT * FROM dbo.fn_KullaniciListe(2)

Fonksiyonu silmek için Drop Function komutu kullanılır,

DROP FUNCTİON 'fonksiyonadi'