MySQL veritabanında Parametresiz Stored Procedure Oluşturma

MySQL veritabanı işlemleri yaparken MySQL'in profesyonel editörü olan MySQL Workbench kullanıyoruz. Bu editörü MySQL web sitesinden ücretsiz indirebilirsiniz. Web tabanlı bir editör olarak PhpMyAdmin de kullanabilirsiniz. PhpMyAdmin'in eski sürümlerinde stored procedure oluşturma özelliği yok ama yeni sürümlerde bulunmaktadır. 

MySQL veritabanında önce personeldb adında bir  schema(veritabanı) oluşturup, içinde tblpersonel isimli bir tablo tanımlıyoruz. Bu tablomuz aşağıdaki gibi alanlardan oluşuyor.  Burada personelID alanı Primary Key(Birincil Anahtar) ve AI(Auto Increment- Otomatik Artan) olarak işaretlenmesine dikkat ediyoruz. Diğer alanlarımız olan ADI, SOYADI, TCKIMLIK ve TELEFON alanları VARCHAR(45) yani karakter tipinde. MAAS alanı ise sayısal veri alacağımız DECIMAL tipinde.  DECIMAL(15,2) yaparak maksimum 15 hane ve virgülden sonra 2 kuruş hanesi koyacağımızı belirtiyoruz. 

Önemli bir not: Türkçe karakterlerin düzgün çıkması için veritabanı oluştururken mutlaka Collation kısmını utf8_turkish_ci olarak ayarlayınız. Aksi taktirde MySQL varsayılan olarak Latin1 dil sisteminde veritabanını oluşturacak ve Türkçe karakter sorunu yaşayacaksınız. Örneğin aşağıda Oğuzhan TAŞ gibi isimlerde problemli bir görünüşle karşılaşacaksıınz. Şayet Collation parametresini ayarlamayı unutursanız, bu veritabanı içinde oluşturduğunuz tüm tablolar ve alanlar latin1 sistemine göre ayarlanacak ve teker teker düzeltmeniz gerekecektir. 


Bu tablomuza aşağıdaki gibi veriler girdiğimizi düşünelim.  Bilgi girerken personelID alanı dışında diğer alanları girebilirsiniz. personelID alanını boş geçiyoruz, zira bu alana veritabanı otomatik olarak sayı verecek, çünkü yukarıda AI(Auto Increment) olarak tanımladık. Verileri girdikten sonra altta bulunan Apply(Uygula) düğmesine tıklıyoruz. 



Parametresiz Stored Procedure Yazma

Personel tablomuzda bütün personellerin aldıkları maaş ortalamasını döndüren parametresiz bir saklı yordam yazalım.

CREATE DEFINER=`root`@`localhost`
PROCEDURE `personel_maas_ortalama`()
BEGIN
  select  avg(maas) from tblpersonel ;
END


Burada BEGIN (Başla) ve END(Bitir) bloğu içerisinde komutlarımızı yazıyoruz. Burada sadece basit bir SQL komutu yazdık, fakat bir programlama dilinde gördüğünüz kavramların hepsini kullanabiliriz. Örneğin değişken tanımlamalar, şart yapıları ve döngüler yer alabilir.

Oluşturduğumuz saklı yordamı çağırmak için de Query ekranında aşağıdaki şekilde bir komut veriyoruz.
CALL personeldb.personel_maas_ortalama();

Burada stored procedure çağırırken ilk önce CALL(çağır) komutunu kullanıyoruz, daha sonra veritabanı adını yazıp nokta koyduktan sonra prosedür adını yazıyoruz. Tıpkı programalama dillerinde fonksiyon kullanır gibi parametre almıyorsa sadece parantez açıp kapatıyoruz.  



Şimdilik bu kadar, Stored Procedure ile ilgili yazılarımıza devam edeceğiz. Parametreli stored procedure tanımlamayı ve çağırmayı da sonraki yazımızda işleyeceğiz.

PHP web programlama dili ile MySQL'de oluşturulan bir stored procedure'ü çağırma işlemini aşağıdaki yazımdan takip edebilirsiniz.
 
PHP ile Saklı Yordam Kullanımı
MySQL ile Komut Satırından Tablo Oluşturma
MySQL Komut Satırından Veritabanı Oluşturma
MySQL PhpMyAdmin ile Veritabanı ve Tablo Oluşturma
MySQL Veritabanında Yedekleme
MySQL Veritabanında Veri Şifreleme
Linux ve OSX İşletim Sistemlerinde MySQL Başlatma ve Durdurma
MySQL'de TimeStamp formatından  DATE formatına çevirim
Wamp içindeki MySQL ve PhpMyAdmin'in felaketten nasıl kurtarırız?
- Asp.net ile MySQL Veritabanına Kayıt Ekleme
Asp.net ile MySQL Veritabanına Kayıt Ekleme, Silme, Güncelleme

Mutlu kodlamalar,
Oğuzhan TAŞ
Şubat 2018
Bookmark and Share