Bu dersimizde SQL Server da önem arz eden, bazen çok ihtiyaç duyduğumuz kendi fonksiyonlarımızı nasıl yazacağız bu konuya değineceğiz.
Functionlar istenilen değer tipinde dönüş yapabilir. INT, VARCHAR değer döndürebileceğiniz gibi bir tablo da döndürebilirsiniz. Basit bir function ile örnekleyelim konuyu.
KDV değerini hesaplayan fonksiyon üzerinden dersimize başlayalım.Fonksiyonlarda bir fiyat parametresi alacak ve %18 kdvsi ile geri döndürecek.Biz nesneleri nasıl oluşturuyorduk bir hatırlayalım. Create kelimesiyle nesneleri oluşturuyoruz.Toplam 6 rakam sayısıdır, bu rakamların ikisi virgüllü olabilir şeklindedir. Returns decimal(6,2) deyince decimal tipinde bir değer döndürecek.As bunu demek zorundayız yazmasak da oluyor ama mutlaka yazın.begin ve end derken C# daki gibi {} işaretlerine benzer.Return @Fiyat*1.18 deyince fiyat diye değişken alıyor ve bu fiyatı %18 ile çarpıyor.Şimdi fonksiyonumuzu çalıştıralım ve fonksiyonlarımız nerede bakalım.
create function KDV_Hesapla(@Fiyat decimal (6,2)) returns decimal(6,2) as begin return @Fiyat*1.18 end go
Bizim kendimizin ürettiği her bir fonksiyon Programmability->Scalar-valued Functions adında klasörde fonksiyonlarımız saklanacak.
Şimdi bu fonksiyonu nasıl kullanacağımıza gelelim. Kendi yazdığımız fonksiyonları kullanırken başına dbo. diye yazarak çağıracağımızı söyleyelim.
select dbo.KDV_Hesapla(10)
Burada dikkat edeceğiniz nokta ise içindeki basamak sayısı olmalıdır. Biz içindeki basamak sayısını 6 basamaklı olmasını istemiştik ama bunun 4 basamağı virgülden önce 2 basamağı da virgülden sonra olsun dediğimiz için aşağıdaki örnekte overflow (taşma) olduğunu belirtelim.
select dbo.KDV_Hesapla(800000)
Diğer bir konu da virgülden sonra olan rakamların sayısıdır. Bizim belirttiğimiz rakam sayısı 2 olduğu için sadece 2 basamağını alır. Yuvarlamaya çalışır. Mesela aşağıdaki örneği inceleyin. İki basamaktan fazla basamak olduğunu göreceksiniz ve bunun yuvarladığına bakınız.
select dbo.KDV_Hesapla(8000.45622156)
Örnek: Parametre olarak girilen bir tarihe göre yaş hesaplama nasıl yapılır?
create function YasBulun ( @dogumTarihi date ) returns tinyint as begin return Year(getdate())- year(@dogumTarihi) end go select dbo.YasBulun('08.02.1991') as [Sümeyranın Yaşı]
Örnek: Girilen iki sayıyı toplayan Fonksiyon yazınız. Girilen sayıları 12.2 ve 45 olarak alınız.
create function ikisayiyiTopla ( @sayi1 float, @sayi2 float ) returns float as begin return @sayi1+@sayi2 end go select dbo.ikisayiyiTopla(12.2,45)
İşte bu kadar kolay. Sizin de bazen kendi fonksiyonlarınızı yazmak isteyeceğiniz zaman olacaktır ki bu dersimiz size umarım rehberiniz olur.
2 yorum
recep · Aralık 20, 2018 10:46 am tarihinde
Aferin kız
Sertan · Aralık 6, 2019 7:31 pm tarihinde
Çok teşekkür ederim emeğinize sağlık