PHP ile Stored Procedure(Saklı Yordam) Kullanımı

Stored Procedure nedir? Daha önce SQL Server, ORACLE,Sybase gibi veritabanlarından birini kullanmışsanız mutlaka stored procedure(SP) Türkçe adıyla Saklı Yordam kullanmışsınız.Stored Procedure'ler veritabanı içerisinde tanımlanan özel fonksiyonlardır ve çok hızlı çalışırlar.  Veritabanını içine gömülen kodlar olduğu için peroformansları da haliyle farklıdır. Topkı programlama dillerindeki metodlar-fonksiyonlar gibi parametre alıp, sonuç döndürebilirler.

Stored Procedure desteği varsa kullandığınız gerçek bir veritabanıdır, stored procedure, trigger desteği yoksa o tam bir veritabanı sayılmaz. Örneğin Access, Paradox, Dbase gibi veritabanlarında Stored Procedure desteği yoktur. ORACLE, SQL Server, PostgreSQL, MySQL, Sybase gibi veritabanlarında SP desteği vardır. 


Şimdi nasıl yazacağımıza değinelim. MySQL web sitesinden MySQL Workbench aracını indirelim. PhpMyAdmin'in yeni sürümlerinde SP yazabilirsiniz, ama eski sürümlerinden SP yazamazsınız. Biraz daha profesyonel bir araç olduğu için MySQL Workbench kullanacağız. Workbench'de veritabanlarına SCHEMA(şema) adı verilir. Aşağıda görüldüğü gibi bir PERSONELDB isimli veritrabanı oluşturup, içinde bir TBLPERSONEL isimli bir tablo tanımlandı.



Aslında tblpersonel tablosonu daha önce PhpMyAdmin'de oluşturduğum için burada nasıl oluştulacağını anlatmadım. Sol taraftaraki personeldb altındaki Tables üzerine sağ tıklayıp Create Table komutunu vererek oluşturabilirsiniz.





Şimdi biz sadece Maaş Ortalamasını bulan basit bir Stored Procedure(SP) yazacağız. SP yazmadan önce yazacağımız SQL kodunu bir test edelim. SQL sorgusunu yazdıktan sonra aşağıdaki gibi şimşek simgesine tıklayarak sonucu görebilirsiniz. 


Aşağıda MaaşOrtalamasını bulan stored Procedure'ü yazdık. Sol taraftaki Stored Procedures üzerine sağ tıklayıp, New Stored Procedure seçeneğini seçelim. Ardından aşağıdaki kod satırlarını yazalım.

CREATE DEFINER=`root`@`localhost`  PROCEDURE `ortalama_maas`(out ortalama_maas decimal)
 
BEGIN
 
      SELECT avg(MAAS) AS ortalama_maas from tblpersonel;
 
END
 




Şimdi maasortalama.php isimli bir dosya açıp, aşağıdaki kodları yazalım.

<html>
<head> <meta charset="utf-8"> </head>
<body>
<?php
$baglan=mysqli_connect("localhost","root","","personeldb");
mysqli_set_charset($baglan, "utf8");
 
$sonuc=mysqli_query($baglan,'CALL ortalama_maas(@sonuc_maas)');
$satir=mysqli_fetch_array($sonuc);
echo $satir[0];
 
?>
</body>
</html>


Ekranda aşağıdaki gibi maaş ortalaması görülecektir.

2700.00 

Türkçe pek kaynak bulunmayan bir konuyu incelemiş olduk. Stored Procedure örneklerini MySQL sitesinde daha detaylı şekilde bulabilirsiniz.

Mutlu kodlamalar,
Oğuzhan TAŞ
Nisan, 2016

 

Bookmark and Share