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.

Yazan Sümeyra Akbıyık
hakkımdaki her şeyi bu blogda bulabilirsin. Haydi sende bir göz gezdirmeye ne dersin?

    1 Yorum

  1. recep Aralık 20, 2018 at 10:46 am Cevapla

    Aferin kız

Yorum bırak