Merhaba Arkadaslar,
Bu makalemizde SQL Server da önem arz eden, bazen gerekliligini iliklerinize kadar hissettiginiz kendi yazacagimiz SQL Functionlarini inceleyecegiz.
Functionlar istenilen deger tipinde dönüs yapabilir. INT, VARCHAR deger döndürebileceginiz gibi bir tablo da döndürebilirsiniz. Basit bir function ile örnekleyelim konuyu.
Mesela MUSTERI tablosunda parametre olarak verdigimiz ID’den ID’si büyük esit olan müsterilerden yasi en büyük olanin yasini döndürelim.
CREATE FUNCTION udf_MusteriEnBuyukYas
(
@Id int
— alacagi parametreleri virgül
–ile ayirarak parametre birden cok parametre verebilirsiniz
)
RETURNS int –döndürecegi degerin tipi
AS
BEGIN
DECLARE @Result int
SET @Result = (SELECT Max(Yas) FROM MUSTERI Where Id >=@Id)
RETURN(@Result)
END
Peki, bunu nasil çalistiracagiz. Hemen onun da kod örnegini verelim.
DECLARE @Id int
SET @Id = 2
SELECT dbo.udf_MusteriEnBuyukYas(@Id)
Çok güzel bir fonksiyon örnegi ile konumuzu bitirelim. Bu fonksiyon bir tablo döndürmektedir. Mesela DB den adinda “Musteri” nin geçtigi ‘Default or DEFAULT constraint’
‘Scalar function’ ,’Inlined table-function’ ,’Stored procedure’ ,’Rule’,’Replication filter stored procedure’ ,’Table function’ ,’Trigger’ ,’User table’ ,’View’ ,’Extended stored procedure’ leri bulalim ve tipini de yazdiralim. Bunun için asagidaki fonksiyonu olusturalim.
Create Function dbo.udf_FindObjects (@string varchar(100))
returns @tbl Table(Name varchar(128), Type varchar(100))
AS
BEGIN
insert into @tbl(Name,Type) select name, ObjectType = case
when TYPE=‘D’ then ‘Default or DEFAULT constraint’
when TYPE=‘FN’ then ‘Scalar function’
when TYPE=‘IF’ then ‘Inlined table-function’
when TYPE=‘P’ then ‘Stored procedure’
when TYPE=‘R’ then ‘Rule’
when TYPE=‘RF’ then ‘Replication filter stored procedure’
when TYPE=‘TF’ then ‘Table function’
when TYPE=‘TR’ then ‘Trigger’
when TYPE=‘U’ then ‘User table’
when TYPE=‘V’ then ‘View’
when TYPE=‘X’ then ‘Extended stored procedure’
else ‘others’
end
from sysobjects where id in
(select id from syscomments where text like ‘%’+@string+‘%’)
return
END
Örnek sorgu olarak da
SELECT * FROM dbo.udf_FindObjects(‘musteri’) çalistirdigimiz da asagidaki sonucu aliriz.
merhaba function da update işlemi yapmak istiyorum örnek bulamadım
mod, cstr, cint. cdate fonksiyonlarinin kullanimi bilen varmi.
S.a Bana PL/SQL ile ilgili yardim edebilecek biri var mi ?
Varsa msn adresimi ekleye bilir mi?
game_kolik7@hotmail.com
tesekkürler..
Süper olmus