Bu yazımda Mysql veritabanında fonksiyon tanımlama ve kullanmayı göreceğiz. Veritabanı ile projeler geliştirdiğimizde kesinlikle ihtiyaç duyacağımız ve kullanacağımız trigger, stored procedure, fonksiyon gibi yapılar projelerimizin daha anlaşılır daha kolay yapıda olmasını sağlıyor. Ayrıca performans kazancı sağlıyor. Bu yazımda da ilk olarak Mysql ile fonksiyon oluşturmayı ve bu fonksiyonu C Sharp ve Asp.net ile kullanmayı göreceğiz.
Öncelikle veritabanımızın yapısını, verileri ve sonunda elde etmek istediğimiz yapıyı aşağıda görebiliriz.
Görüldüğü gibi iki adet tablomuz var ve bu iki tablo arasında ilişkili bir bir bölüm var. Biz bir tablodan verileri alırken diğer tablo ile ilişkili alan hakkında bilgiyi ise yazacağımız fonksiyon yardımı ile alacağız. Aslında bu ilişkiyi joinlerle veya programlama kodlarını kullanarak yazacağımız fonksiyonlar ile kurabiliriz. Ama Mysql içinde tanımlayacağımız fonksiyon ile hiçbir ek işleme gerek kalmadan bu ilişkiyi kuracağız ve yukarıda ki sonucu elde edeceğiz. Böylece performans kazancımız olacak, daha az işlem yapmış olacağız.
Öncelikle yukarıdaki işlemi yapacak Mysql fonksiyonunu tanımlamak/oluşturmak için aşağıdaki gibi bir kodlama kullanabiliriz.
CREATE DEFINER=`root`@`localhost` FUNCTION `meslek_getir`(meslek_no INTEGER) RETURNS varchar(75) CHARSET latin5
BEGIN
return (select `meslek` from `meslekler` where `meslek_id`=`meslek_no`);
END
Daha sonra ise programlama tarafında yukarıda elde ettiğimiz sonuç için gereken sorgumuz ise şöyle olmalı:
bg = new MySqlConnection("server=localhost; user=root; password=root; database=deneme; charset=latin5");
// sorgumuzda fonksiyonumuzu çağırıyoruz
MySqlDataAdapter adaptor = new MySqlDataAdapter("select isim_soyisim as AdSoyad, meslek_getir(meslek_id) as Meslekler from kisiler", bg);
DataTable tablo = new DataTable();
adaptor.Fill(tablo);
GridView1.DataSource = tablo;
GridView1.DataBind();
Görüldüğü gibi yazdığımız fonksiyon ile birkaç adımda gerçekleşecek işlemi tek adımda yapabiliyoruz. Önümüzdeki günlerde stored procedure ve trigger gibi yapılar hakkında yazılarım olacak.
İyi Çalışmalar!