<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Yusuf KOÇ &#187; strored</title>
	<atom:link href="http://www.ysfkc.com/tag/strored/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ysfkc.com</link>
	<description>Php Günlüğü</description>
	<lastBuildDate>Fri, 23 Jul 2010 16:39:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Mysql Stored Procedure Kullanımı</title>
		<link>http://www.ysfkc.com/mysql/mysql-stored-procedure-kullanimi.html</link>
		<comments>http://www.ysfkc.com/mysql/mysql-stored-procedure-kullanimi.html#comments</comments>
		<pubDate>Fri, 23 May 2008 21:01:18 +0000</pubDate>
		<dc:creator>Raiden</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[procedure]]></category>
		<category><![CDATA[stored procedure]]></category>
		<category><![CDATA[strored]]></category>

		<guid isPermaLink="false">http://www.ysfkc.com/?p=8</guid>
		<description><![CDATA[Bu yazım da sizlere Mysql in stored procedure olayından bahsedeceğim. Nedir bu stored procedure denilen şey diye düşünüyor olabilirsiniz hemen açıklıyayım bellekte saklanmış prosedürler yani sql sorguları diyebiliriz. Uygulamalarımız da kullandığımız sql cümleleri her defasında yeniden derlenir ve bize sonucu döndürürler. Peki stored procedur un ne farkı var ? Bu özellik MySQL 5+ versiyonundan itibarenden [...]]]></description>
			<content:encoded><![CDATA[<p>Bu yazım da sizlere Mysql in stored procedure olayından bahsedeceğim. Nedir bu stored procedure denilen şey diye düşünüyor olabilirsiniz hemen açıklıyayım bellekte saklanmış prosedürler yani sql sorguları diyebiliriz.</p>
<p>Uygulamalarımız da kullandığımız sql cümleleri her defasında yeniden derlenir ve bize sonucu döndürürler. Peki stored procedur un ne farkı var ?</p>
<p><span id="more-8"></span></p>
<p>Bu özellik MySQL 5+ versiyonundan itibarenden geçerlidir.</p>
<p>Stored Procedure ile çok sık kullandığımız sql cümlelerimizi mysql e bir kere giriyoruz ve ilk defaya mahsus derleniyor. Sonrasın da ise oluşturduğumuz stored procedur u kullandığımız da sql cümlelerimiz yeniden derlenmiyor direk bize sonucu veriyor.</p>
<p>Bu özelliği daha çok büyük çaplı projelerde, online hit i yüksek sitelerimiz de kullanabiliriz. Küçük uygulamalar için kullanmak biraz hamallık olur düşüncesindeyim.</p>
<p>Örnek bir Stored Procedure oluşturalım ve ilgili tablomuz ile nasıl kullanabiliriz ona bakalım.</p>
<p><strong>Tablo Adı:</strong><br />
Yazar<br />
id : int<br />
ad: varchar<br />
soyad: varchar<br />
yas: int</p>
<p>Evet yukarıdaki gibi bir tablo elde ettik. Şimdi bu tablo ile neler yapmak istiyoruz onu belirlemeliyiz. Ben bu tablo ile 3 işlem yapmak istiyorum.</p>
<p>1.cisi Yazar var mı yok mu kontrol etmek</p>
<p>2.cisi Yazar id si ile ilgili yazar bilgilerini çekmek</p>
<p>3.cüsü Verilen yazar id sine göre ilgili yazarı silmek.</p>
<p>Bu üç işlemi yapan örnek stored procedurümüz aşağıdadır.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">DELIMITER $$
&nbsp;
DROP PROCEDURE <span style="color: #b1b100;">IF</span> EXISTS `test`<span style="color: #339933;">.</span>`yazar_islem` $$
CREATE DEFINER <span style="color: #339933;">=</span> `root`<span style="color: #339933;">@</span>`localhost` PROCEDURE `test`<span style="color: #339933;">.</span>`yazar_islem` <span style="color: #009900;">&#40;</span>in yazarid int<span style="color: #339933;">,</span> in islem int<span style="color: #009900;">&#41;</span>
BEGIN
<span style="color: #b1b100;">CASE</span> islem
WHEN <span style="color: #cc66cc;">1</span> THEN SELECT id FROM yazar WHERE id <span style="color: #339933;">=</span> yazarid<span style="color: #339933;">;</span>
WHEN <span style="color: #cc66cc;">2</span> THEN SELECT ad<span style="color: #339933;">,</span>soyad<span style="color: #339933;">,</span>yas FROM yazar WHERE id <span style="color: #339933;">=</span> yazarid<span style="color: #339933;">;</span>
WHEN <span style="color: #cc66cc;">3</span> THEN DELETE FROM yazar WHERE id <span style="color: #339933;">=</span> yazarid<span style="color: #339933;">;</span>
<span style="color: #b1b100;">ELSE</span> SELECT <span style="color: #0000ff;">'Hatali İslem'</span><span style="color: #339933;">;</span>
<span style="color: #990000;">END</span> <span style="color: #b1b100;">CASE</span><span style="color: #339933;">;</span>
<span style="color: #990000;">END</span> $$
&nbsp;
DELIMITER <span style="color: #339933;">;</span></pre></div></div>

<p>yukarıda daha önceden yapmak istediğimiz işlemleri yapacak olan prosedürümüzü tanımladık. şimdi bu prosedürü .sql uzantılı bir dosyaya kaydedip  veritabanınıza yüklediğiniz de prosedürümüz oluşmuş olcak.</p>
<p>Şimdi gelelim bu satırlar neyi ifade ediyor. Satır Satır Açıklayalım.</p>
<p><strong>DELIMITER $$   $$ DELIMITER<br />
</strong></p>
<p>bu ifade bir veri kümesini başlangıç ve sonunu işaretlemek için kullanılır.</p>
<p><strong>DROP PROCEDURE IF EXISTS `test`.`yazar_islem` $$</strong></p>
<p>bu satırda ise eğer <strong>test </strong>veritabanında <strong>yazar_islem</strong> adında bir prosedür daha önceden tanımlanmış ise bunu kaldırıyor.</p>
<p><strong> CREATE DEFINER = `root`@`localhost` PROCEDURE `test`.`yazar_islem` (in yazarid int, in islem int)</strong></p>
<p>bu satırda ise se <strong>CREATE</strong> tümcesi ile prosedür oluşturuluyor. <strong>DEFINER </strong>tümcesi ile oluşturulan prosedürün hangi kullanıcının kullanıma sahip olduğunu tanımlıyor. <strong>PROCEDURE </strong>tümcesi ile oluşturacağımız prosedürün adını veriyoruz.</p>
<p>Buraya kadar herşey tamam ama peki <strong>in yazarid int</strong> ve <strong>in islem int </strong>da ne oluyor ?  Buradaki <strong>in </strong>oluşan prosedüre bir argüman girileceği ve bu belirtilen argümünın da veri tipinin int olacağı söyleniyor. Aynısı islem içinde geçerli.</p>
<p>3 değişik argüman alıyor. Bunlar;</p>
<p>in       : veri girişi için kullanılıyor<br />
out     : veri çıkışı için kullanılıyor<br />
inout  : hem veri girişi hem de veri çıkışı için kullanılıyor.</p>
<p><strong>BEGIN</strong> ve <strong>END</strong></p>
<p>biz oluşturacağımız prosedür sql cümlelerini bu iki tümce arasında belirteceğiz.</p>
<p><strong>CASE islem</strong></p>
<p>satırı ile islem argümanın alacağı değeri <strong>WHEN</strong> ile kontrol edip ilgili işlemi döndüreceğiz. Yani <strong>islem</strong> değeri 2 ise bize yazar bilgilerini çekicek 3 ise silecek vb.</p>
<p><strong>ELSE SELECT</strong></p>
<p>satırı ile herhangi bir islem seçimi yapılmamışsa uyarı vericek.</p>
<p><strong>END CASE</strong></p>
<p>ile prosedürümüzü oluşturan cümleyi sonlandırıyoruz.</p>
<p>Oluşturulan bu Stored Procedure yi nasıl kullanacağız ?  Bunun için phpmyadmin arayüzünü kullanabilirsiniz veya mysql komut satırından da faydalanabilirsiniz.</p>
<p>Ben komut satırını kullanarak örnek vereceğim. Öncelik Mysql Komut Satırını Açınız. Sizden şifre isteycektir eğer istemez se <strong>mysql -u root </strong>komutunu girin ve Şifre kısmına mysql bağlantı şifrenizi yazın ve enterleyin.</p>
<p>daha sonra stored procedur u hangi veritabanı için oluşturduysanız o veritabanına</p>
<p><strong>use veritabani_adi;<br />
</strong></p>
<p>komutunu vererek geçiş yapınız.</p>
<p>Son olarak oluşturduğumuz proceduru çağırmak için aşağıdaki komutu veriniz.</p>
<p><strong>call yazar_islem(1,2);</strong></p>
<p>evet bunun sonucunda size id si 1 olan yazarın bilgilerini getirecektir. 2 yerine 3 derseniz o yazarı silecektir.</p>
<p>Örneğimiz le ilgili resim:</p>
<p><img src="http://www.ysfkc.com/dosyalar/sp_raiden.png" alt="Stored Procedure" width="683" height="430" /></p>
<p>görüldüğü üzere işlem sonucumuz da yazar tablosunda bulunan <strong>YUSUF KOÇ </strong>adlı yazar bilgilerini getirdi.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ysfkc.com/mysql/mysql-stored-procedure-kullanimi.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
