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'
Bir yanıt yazın