Functions
Yeni bir makalede tekrar merhaba;
Bu makalemizde SQL de her zaman ihtiyaç duyacağımız hatta gerekliliğini gözümüzün içine içine sokan Function nesnelerini ele alacağız. Tabi işin bilgi sahipleri hemen şu soruyu soracaklardır kendi kendilerine stored procedure mi yoksa Function mu diye ? Ben her zaman ikisininde yerinin farklı olduğunu ve sadece stored procedure ye yönelmenin yanlış olduğunu savunanlardanım. Hatta abiyane bir tabirler Function ları ve Stored Procedure leri ben bi ailenin erkek ve kız çocukları gibi düşünürüm. İkiside evlattır ama ne erkek kızın yerini doldurabilir nede kız erkeğin yerini doldurabilir. Sadece stored procedure ile ben her istediğimi yaparım anlayışı aman yaa benim kız erkek çocuğum olmasada olur yada kız çocuğum olmasada olur hepsi erkek olsun yada hepsi kız olsun mantığı ile yaklaşmak gibi bişi olsa gerek. Neyse bu konuyu başka bir makalemizde derinlemesine incelicez. Şimdi geçelim asıl konumuza:
Lower: Tum harfleri kucuk harfe cevirir..
Select Lower(FirstName) from EmployeesCiktisi; Ahmet yerine ahmet, MEHMET yerine mehmet...
Substring:
CompanyName kolonundaki verilerde 1' den basla 3 tane al.
Select Substring(CompanyName,1,3) from CustomersCiktisi; AFLAN yerine ALF, ANALA yerine ANA...
DateTime Functions..
GetDate(): simdiki zaman..
Select GetDate()
Ciktisi; 2010-01-29 18:13:50.917
Year: Belli bir tarihin yili.. (Ay-Gun-Yil)
Select Year('29.01.2010') --Verilen tarihin yilini alir.
Ciktisi; 2010
Select Year(GetDate()) --simdiki zamanin yilini verir.
Ciktisi; 2010
Month, Day.. gibi diger ozellikleri de bulunmaktadir.
Select Month('10.01.2010') --Verilen tarihin ayini alir.
Ciktisi; 10
Select Day(GetDate()) --simdiki zamanin gununu verir.
Ciktisi; 29
Bugun dogum gunu olan Calisanlarim kimler?
Select FirstName, LastName from EmployeesWHERE Day(BirthDate)=Day(GetDate()) and Month(BirthDate)=Month(GetDate())
BirthDate kolonundaki gun (Day) = simdiki zamanin gunu..
Datediff: iki tarih araligindaki farki verir.
Datediff(dd mm yy, ilk tarih, son tarih)
Select Datediff(dd, '10.10.2000', Getdate())
dd diyerek gun farkina bakmasini soyledik.
Ciktisi; 3053
60 yasindan buyuk Calisanlarim kimler?
Select FirstName, LastName from EmployeesWHERE Datediff(yy,BirthDate,Getdate())>60yy diyerek yil farkina bakmasini soyledik.
Dateadd: Bir tarihe ekleme yapar.
select Dateadd(yy, 10, Getdate()) --Yil ekleyecegim 'yy', 10 ekleyecegim '10', bugunun tarihe ekleyecegim 'getdate()'
select Dateadd(dd, 15, Getdate()) --Gun ekleyecegim 'dd', 15 ekleyecegim '15', bugunun tarihe ekleyecegim 'getdate()'
select Dateadd(mm, 2, Getdate()) --Ay ekleyecegim 'mm', 2 ekleyecegim '2', bugunun tarihe ekleyecegim 'getdate()'
KENDİ FONKSYONLARIMIZ
1.Tek deger donduren fonksiyonlar
Syntax:
Create Function Isim(@parametre1 tipi, @parametre2 tipi)
returns geriDonusTipias
begin
islemlerimiz...
return sonuc end
Kdv hesaplama fonksiyonu..
Create Function KdvHesapla(@fiyat money, @kdvOrani float)
returns money
as
begin
Declare @sonFiyat money
set @sonFiyat=@fiyat+@fiyat*@kdvOranireturn @sonFiyatend
Bizim tanimladigimiz fonksiyonlarin Sysem fonksiyonlari ile karismamasi iCin basina dbo yazilir.
select dbo.KdvHesapla(100,0.18)
Tabloda kullanimi
Select ProductName, dbo.KdvHesapla(UnitPrice,0.18) as 'Toplam Fiyati' from ProductsYas hesapla
Create Function YasHesapla(@ilkTarih datetime)
returns int
as
begin
Declare @yas int
Set @yas=Datediff(yy, @ilkTarih, getdate())
return @yasend
Select FirstName, LastName, dbo.YasHesapla(BirthDate) from Employees
Tablo donduren fonksiyonlar
Parametreli View olarak gorulebilir.
Syntax:
Create Functions Isim
(@parametre1 tip, paramtere2 tip)
returns table --Tablonun iCeriginde kayitlari dondurecek
return
(
Select sorgusu...
)
Create Function SehreGoreMusteri(@sehir nvarchar(20))
returns table
return
(
Select CompanyName, ContactName, Address from Customers WHERE City=@sehir
)
Select * from SehreGoreMusteri('Paris')
Tarihe Format Vermek
Convert:
Convert(CevrilecekTip, deger, Stil Numarasi)
Select Convert(nvarchar(20), BirthDate, 107) from Employees
NOT: Buradaki Tablo, kolon isimlerini vs.. ler Northwind Databasesi üzerinden örneklemelerle vermeye çalıştım. İlgili databaseyi buradan indirebilirsiniz. Umarım faydalı olmuştur. Sağlıcakla kalınız.
System Functions..
Takip Ediyorum
Faydalı Projeler
Yorumlar
Sizde Yorumda Bulunun
Konuya dair fikir ve sorularınızı paylaşın