User Defined Function (UDF) Nedir ?

User Defined Function

Merhalabar, Bugün ki yazımıda User Defined Function konusunu ele alağız. Proglama mantığında kullandığımız fonksiyonlara benzetebilir. Kendi fonksiyonlarımı oluşturup, istediğimiz her yerde kullanabiliriz.

SQL Server’da fonksiyonlarda kullanılan 2 farklı fonksiyon çeşidi vardır.

  • Table-Valued Function
  • Scalar Function

2 fonksiyon çeşidini tanımlayıp örneklerimizi gerçekleştireceğiz.

Store Procedure’ler ile çok benzeyen fonksiyonların ikisi aradındaki farklarıda yazımızın sonunda ele alacağız.

Table-Valued Function

Table-Valued Function, yapılan işlem sonunda geriye tablo döndürüren fonksiyon tipidir. Bi sorgu sonucunu geriye döndürmektedir.

Örnekler

People adında tablomuzu oluşturuyoruz.


SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[People](
	[Id] [int] IDENTITY(1,1) NOT NULL,
	[Name] [nvarchar](50) NULL,
	[Surname] [nvarchar](50) NULL,
	[Age] [int] NULL,
 CONSTRAINT [PK_People] PRIMARY KEY CLUSTERED 
(
	[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

Tablomuza kayıtlarımızı ekliyoruz.



INSERT INTO People VALUES('Fatma','Taş',23)
INSERT INTO People VALUES('Ebru','Taş',24)
INSERT INTO People VALUES('Emine','Toprak',25)
INSERT INTO People VALUES('Cem','Bulut',12)

Örneğimizde fonksiyonumuz yaş parametresi almaktadır. Gönderilen yaş değerinden büyük olan insanları tablo olarak geri döndüren fonksiyonumuzu yazalım.



CREATE FUNCTION dbo.PeopleAge
(	
	-- Fonksiyonda yaş parametresini tanımlıyoruz.
	@Yaş int
	
)
RETURNS TABLE 
AS
RETURN 
(
	--Sorgumuzu yazıyoruz.
	SELECT * FROM People WHERE People.Age>@Yaş
)
GO

Fonksiyomumuzu oluşturuk. Şimdi fonksiyonumuzu kullanma zamanı. Fonksiyonu çağırırken dbo.PeopleAge şeklinde çağırmanızı öneririm.



SELECT * FROM dbo.PeopleAge(18)

Parametre olarak 18 değerini gönderdik. Sorgu sonucu olarak 18 yaşından büyük olan insanlar gelecektir.

Scalar Function

Table-Valued Function, yapılan işlem sonunda geriye istenilen veri tipinde değer döndürüren fonksiyon tipidir. Örnek olarak 2 sayıyı toplanyan fonksiyonu düşünürsek geri dönüş değeri INT yada Double diyebiliriz.

Örnekler

2 sayıyı toplayan fonksiyonu yazalım.



CREATE FUNCTION dbo.Toplamaİşlemi
(
@Parametre1 int,
@Parametre2 int
)
RETURNS INT
AS
BEGIN

	RETURN @Parametre1+@Parametre2

END
GO

Fonksiyonumuzu oluşturduk. Kullanma zamanı.



SELECT dbo.Toplamaİşlemi(2,4)

2 sayıyı çıkaran fonksiyonu yazalım.


--User Defined Function
CREATE FUNCTION dbo.Cikarmaİslemi
(
@Parametre1 int,
@Parametre2 int
)
RETURNS INT
AS
BEGIN

	RETURN @Parametre1-@Parametre2

END
GO

Fonksiyonumuzu oluşturduk. Kullanma zamanı.



SELECT dbo.Cikarmaİslemi(2,4)

Stored Procedure vs Function

  • Procedure DML işlemlerine izin verirken Function sadece SELECT işlemine izin verir.
  • Procedure WHERE / HAVING / SELECT ile beraber kullanılmazken Function kullanılır.
  • Tablo döndüren fonksiyonlar Join’lerde kullanılabilir.
  • Try-Catch bloğunu Procedure’da kullanabiliriz ama Function’da kullanamayız.

User Defined Function yazımızın sonuna geldik. Diğer yazılarımızıda incelemeyi unutmayınız.

Referans: User Defined Function

E-bültene Abone Ol Merak etmeyin. Spam yapmayacağız.

Yazar

Kocaeli Üniversitesi Bilişim Sistemleri Mühendisliğini bitirip sektörde veri tabanı mühendisi olarak göreve başladım.

İlgili Yazılar

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Hızlı yorum için giriş yapın.

Başka Yazı Yok

Kayıt Ol

Zaten üye misiniz? Giriş Yap

Giriş Yap

Henüz üyeliğiniz yok mu? Kayıt Ol