ASP.NET
Network Akademi

Met Hostimg

“Bilgi paylaşıldıkça artar” sloganı ile .NET Platformuna ilişkin birikimlerin paylaşıldığı ASP.NET.TR Topluluğunda sizde “YAZAR” olmak için ; info@asp.net.tr e-mail adresine kendinizi anlatan bir e-mail göndererek başvuruda bulunabilirsiniz.

Functions

Mahmut TEMUR
SQL
10.12.2010 13:07:10
Hit : 13926

 

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 Customers
Ciktisi; 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 geriDonusTipi
as
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 @sonFiyat
end

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 @yas
end
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..




BU İÇERİĞE YORUMDA BULUNUN


Bu MAKALE'ye yorum yapabilmek için Üye olmalısınız ...!


BU İÇERİĞE YAPILAN YORUMLAR