<?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>bilyaz.com , Programlama Makaleleri, Yazılım Makaleleri , Örnek Kodlar , Eğitim Videoları , C#,ASP.NET,SQL,PHP &#187; Emrah Kocak</title>
	<atom:link href="http://www.bilyaz.com/index.php/author/emrah-kocak/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bilyaz.com</link>
	<description>bilyaz.com , Programlama Makaleleri, Yazılım Makaleleri , Örnek Kodlar , Eğitim Videoları , C#,ASP.NET,SQL,PHP</description>
	<lastBuildDate>Sun, 29 Apr 2012 22:04:33 +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>C# ta Stored Procedure Kullanmak</title>
		<link>http://www.bilyaz.com/index.php/c-ta-stored-procedure-kullanmak.html/</link>
		<comments>http://www.bilyaz.com/index.php/c-ta-stored-procedure-kullanmak.html/#comments</comments>
		<pubDate>Wed, 23 May 2007 23:31:17 +0000</pubDate>
		<dc:creator>Emrah Kocak</dc:creator>
				<category><![CDATA[ADO.NET / SQL]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[saklı yordam]]></category>
		<category><![CDATA[Stored procedure]]></category>

		<guid isPermaLink="false">http://www.bilyaz.com/?p=63</guid>
		<description><![CDATA[Tekrar merhaba. Önceki makalemde stored procedureler hakkında bir giriş bilgisi vermiştim ve genel olarak nasıl yazıldığına dair örnekler yapmıştık. Bu makalede stored procedurelerin c#&#8217;ta kullanılması ile ilgili biraz bilgi vereceğim. Bildiğiniz gibi normal bir c# uygulaması yaptığınızda sql&#8217;le bağlantı kurmak için bir sqlconnection nesnesi, bir sqlcommand nesnesi ve duruma göre sqldatareader veya sqldataadapter nesneleri kullanırız. <a href='http://www.bilyaz.com/index.php/c-ta-stored-procedure-kullanmak.html/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.bilyaz.com%2Findex.php%2Fc-ta-stored-procedure-kullanmak.html%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;font=lucida grande&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px;height:30px;margin-top:5px;"></iframe><div align="left" style="float:left;padding:0px 5px 5px 0px;"><a name="fb_share" type="box_count" share_url="http://www.bilyaz.com/index.php/c-ta-stored-procedure-kullanmak.html/"></a></div><table width="98%" align="center" border="0" cellspacing="0" cellpadding="0">
<table width="96%" align="center" border="0" cellspacing="0" cellpadding="0">
<tr>
<td bgcolor="#FFFFFF" class="metin">
<table border="0" width="96%" id="table1" cellspacing="0" cellpadding="0">
<tr>
<td>
<p class="MsoNormal">Tekrar merhaba.</p>
<p>		Önceki makalemde stored procedureler hakkında bir giriş bilgisi<br />
		vermiştim ve genel olarak nasıl yazıldığına dair örnekler yapmıştık. Bu<br />
		makalede stored procedurelerin c#&#8217;ta kullanılması ile ilgili biraz bilgi<br />
		vereceğim.</p>
<p class="MsoNormal">Bildiğiniz gibi normal bir c# uygulaması<br />
		yaptığınızda sql&#8217;le bağlantı kurmak için bir sqlconnection nesnesi, bir<br />
		sqlcommand nesnesi ve duruma göre sqldatareader veya sqldataadapter<br />
		nesneleri kullanırız. Bunda da aynı nesneleri kullanacağız. Fakat tek<br />
		farklılık sqlcomman nesnesinde olacak.</p>
<p class="MsoNormal">.</p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: teal"><br />
		SqlCommand</span><span style="font-size: 10.0pt; font-family: Courier New"><br />
		mycommand= <span style="color:<br />
blue">new</span> <span style="color:teal">SqlCommand</span>();</span></p>
<p class="MsoNormal">.</p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">mycommand.CommandType<br />
		= <span style="color:teal">CommandType</span>.Text &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;satırını<br />
		</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">mycommand.CommandType<br />
		= <span style="color:teal">CommandType</span>.StoredProcedure;&nbsp; olarak<br />
		değiştiriyoruz.</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">Bir de :<br />
		mycommand.CommandText = kısmına çift tırnak içinde<br />
		storedprocedure&#8217;ümüzün adını yazıyoruz.</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">Örneğin:</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">mycommand.CommandText<br />
		= <span style="color:maroon">&quot;DENEME_EKLE&quot;</span>;</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">Daha sonra da<br />
		procedure&#8217;ümüzün aldığı nesneleri gönderiyoruz. Şimdi bunu daha<br />
		açıklayıcı anlatabilmek için bir örnek yapamk istiyorum.</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">Öncelikle bi<br />
		procedure yapalım:</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue"><br />
		CREATE PROCEDURE DENEME_EKLE (@AD NVARCHAR(20),@SOYAD NVARCHAR(20))</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue"><br />
		AS</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue"><br />
		INSERT INTO DENEME_TABLO(AD,SOYAD) VALUES(@AD,@SOYAD)</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue"><br />
		GO</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">Görüldüğü gibi<br />
		procedure&#8217;ümüz iki tane değer alıyor (ad ve soyad) ve bunları<br />
		DENEME_TABLO isimli tablonun AD ve SOYAD sütunlarına ekliyor.</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">Şimdiki aşama<br />
		c#&#8217;ta bu storedprocer&#8217;ü kullanamk için gerekli bağlantıları yapmak. Bu<br />
		bağlantıları da bir metot içinde kullanmak istiyorum.</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue"><br />
		public</span><span style="font-size: 10.0pt; font-family: Courier New"><br />
		<span style="color:blue">void</span> KAYIT(<span style="color:blue">string</span><br />
		ad, <span style="color:blue">string</span> soyad)</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp; {</span></p>
<p class="MsoNormal" style="text-indent: 35.4pt; text-autospace: none; margin-left: 35.4pt">
		<span style="font-size: 10.0pt; font-family: Courier New; color: teal"><br />
		SqlConnection</span><span style="font-size: 10.0pt; font-family: Courier New"><br />
		mycon = <span style="color:blue">new</span> <span style="color:teal"><br />
		SqlConnection</span>();</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color:teal">SqlCommand</span> mycommand=<br />
		<span style="color:blue">new</span> <span style="color:teal">SqlCommand</span>();</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycommand.Connection = mycon;</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycon.ConnectionString = <span style="color:teal">&#8230;&#8230;&#8230;;//<br />
		connectionstring buraya yazılmalıdır</span></span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycon.Open();</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycommand.CommandText = <span style="color:maroon">&quot;DENEME_EKLE&quot;</span>;</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mycommand.CommandType<br />
		= <span style="color:teal">CommandType</span>.StoredProcedure;</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycommand.Parameters.Add(<span style="color:maroon">&quot;@AD&quot;</span>,<br />
		<span style="color:teal">SqlDbType</span>.NVarChar, 50);</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycommand.Parameters[<span style="color:maroon">&quot;@AD&quot;</span>].Value =<br />
		ad;</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycommand.Parameters.Add(<span style="color:maroon">&quot;@SOYAD&quot;</span>,<br />
		<span style="color:teal">SqlDbType</span>.NVarChar, 50);</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mycommand.Parameters[<span style="color:maroon">&quot;@SOYAD&quot;</span>].Value<br />
		= soyad;</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycommand.ExecuteNonQuery();</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycon.Close();</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp; }</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;</span></p>
<p class="MsoNormal">Gördüğünüz gibi KAYIT metodu veritabanındaki<br />
		DENEME_EKLE isimli procedure&#8217;ü kullanıyor, ad ve soyad isminde iki tane<br />
		string parametre alıyor ve geriye değer döndürmüyor.</p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">mycommand.Parameters.Add(<span style="color:maroon">&quot;@AD&quot;</span>,<br />
		<span style="color:teal">SqlDbType</span>.NVarChar, 50);</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">mycommand.Parameters[<span style="color:maroon">&quot;@AD&quot;</span>].Value<br />
		= ad;</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">satırları<br />
		procedure&#8217;ümüzün nesneslerini göndermek için kullanlır.<br />
		<span style="color:<br />
teal">SqlDbType </span><span style="color:black">yazdıktan sonra nokta koyunca<br />
		sql&#8217;deki parametre tiplerini hepsi görünmektedir(int,datetime gibi).</span></span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New; color: black"><br />
		&nbsp;</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New; color: black"><br />
		Şimdi burada dikkat etmemiz gereken bir kaç husus var.</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New; color: black"><br />
		&nbsp;</span></p>
<p class="MsoNormal" style="text-indent: -18.0pt; text-autospace: none; margin-left: 36.0pt">
		<span style="font-size: 10.0pt; font-family: Courier New; color: black"><br />
		1-<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp; </span><br />
		storedprocedure&#8217;de nesneleri hangi sıraya göre yazdıysak (yani bizim<br />
		örnek için önce ad sonra soyad) c#&#8217;tan da o sıraya göre tanıtmalıyız.<br />
		Yani önce soyad sonra ad parametrelerini gönderemeyiz.</span></p>
<p class="MsoNormal" style="text-indent: -18.0pt; text-autospace: none; margin-left: 36.0pt">
		<span style="font-size: 10.0pt; font-family: Courier New; color: black"><br />
		2-<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp; </span><br />
		Veritabanında parametrelerin önüne @ işareti koyduğumuz için c#&#8217;ta da&nbsp;&nbsp;<br />
		parametreleri göndermek için&nbsp; @ işareti kullanmamız gerekir: &#8220;@</span><b><u><span style="font-size: 10.0pt; font-family: Courier New; color: maroon">AD</span></u></b><span style="font-size: 10.0pt; font-family: Courier New; color: maroon">&quot;</span><span style="font-size: 10.0pt; font-family: Courier New"><br />
		gibi</span></p>
<p class="MsoNormal" style="text-indent: -18.0pt; text-autospace: none; margin-left: 36.0pt">
		<span style="font-size: 10.0pt; font-family: Courier New; color: black"><br />
		3-<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp; </span><br />
		Parametrelerdeki büyük küçük harf farklılığına dikkat etmeliyiz. Yani<br />
		procedure&#8217;de @AD olarak tanıttığımız parametreyi c#&#8217;ta @ad olarak<br />
		gösteremeyiz.</span></p>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal">Şu ana kadarki kısımda veritabanımızda<br />
		oluşturduğumuz bir procedure&#8217;e nasıl ulaşacağımız gördük. Şimdi eğer bu<br />
		procedure değer döndürüyorsa nasıl kullanacağız?</p>
<p>		Önceki makalemde stored procedure&#8217;lerin nasıl değer döndürdüğünü ve<br />
		niçin buna ihtiyaç duyulduğunu anlatmıştım. Şimdi bununla ilgili bir<br />
		örnek yapalım:</p>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal">Önce procedure&#8217;ümüzü biraz değiştirelim. Aynı ad ve<br />
		soyadda başka biri varsa kayıt yapmasın ve geriye 0 değeri döndürsün.<br />
		Eğer yoksa kayıt yapsın ve bize 1 değeri döndürsün.</p>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue"><br />
		CREATE PROCEDURE DENEME_EKLE (@AD NVARCHAR(20),@SOYAD NVARCHAR(20))</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue"><br />
		AS</span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;color:blue">Declare @kayitkontrol<br />
		int</span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;color:blue">Declare @SONUC<br />
		int</span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;color:blue">Set @kayitkontrol=select<br />
		count(*) from DENEME_TABLO where AD=@AD and SOYAD = @SOYAD</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue">&nbsp;</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue"><br />
		if(@kayitkontrol = 0)</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue"><br />
		begin</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue"><br />
		INSERT INTO DENEME_TABLO(AD,SOYAD) VALUES(@AD,@SOYAD)</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue"><br />
		set @SONUC = 1</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue"><br />
		end</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue">&nbsp;</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue"><br />
		else</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue"><br />
		begin</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue"><br />
		set @SONUC =0</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue"><br />
		end</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue">&nbsp;</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue"><br />
		return @SONUC</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue"><br />
		GO</span></p>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal">Sıradaki aşama c#&#8217;ta bu procedure&#8217;ü kullanmak.<br />
		Önceki örnekteki motutu bu procedure&#8217;e uygun olarak değiştireceğiz ve<br />
		dönüş değerini int olarak belirleyeceğiz</p>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New; color: blue"><br />
		public</span><span style="font-size: 10.0pt; font-family: Courier New"><br />
		<span style="color:blue">int</span> KAYIT(<span style="color:blue">string</span><br />
		ad, <span style="color:blue">string</span> soyad)</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp; {</span></p>
<p class="MsoNormal" style="text-indent: 35.4pt; text-autospace: none; margin-left: 35.4pt">
		<span style="font-size: 10.0pt; font-family: Courier New">int sonuc;</span></p>
<p class="MsoNormal" style="text-indent: 35.4pt; text-autospace: none; margin-left: 35.4pt">
		<span style="font-size: 10.0pt; font-family: Courier New; color: teal"><br />
		SqlConnection</span><span style="font-size: 10.0pt; font-family: Courier New"><br />
		mycon = <span style="color:blue">new</span> <span style="color:teal"><br />
		SqlConnection</span>();</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color:teal">SqlCommand</span> mycommand=<br />
		<span style="color:blue">new</span> <span style="color:teal">SqlCommand</span>();</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycommand.Connection = mycon;</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycon.ConnectionString = <span style="color:teal">&#8230;&#8230;&#8230;;//<br />
		connectionstring buraya yazılmalıdır</span></span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mycon.Open();</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycommand.CommandText = <span style="color:maroon">&quot;DENEME_EKLE&quot;</span>;</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycommand.CommandType = <span style="color:teal">CommandType</span>.StoredProcedure;</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycommand.Parameters.Add(<span style="color:maroon">&quot;@AD&quot;</span>,<br />
		<span style="color:teal">SqlDbType</span>.NVarChar, 50);</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycommand.Parameters[<span style="color:maroon">&quot;@AD&quot;</span>].Value =<br />
		ad;</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycommand.Parameters.Add(<span style="color:maroon">&quot;@SOYAD&quot;</span>,<br />
		<span style="color:teal">SqlDbType</span>.NVarChar, 50);</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycommand.Parameters[<span style="color:maroon">&quot;@SOYAD&quot;</span>].Value =<br />
		soyad;</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycommand.Parameters.Add(<span style="color:maroon">&quot;@SONUC&quot;</span>,<br />
		<span style="color:teal">SqlDbType</span>.Int);</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycommand.Parameters[<span style="color:maroon">&quot;@SONUC&quot;</span>].Direction<br />
		= <span style="color:teal">ParameterDirection</span>.ReturnValue;</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycommand.ExecuteNonQuery();&nbsp;&nbsp;&nbsp; </span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		sonuc =<span style="color:teal">Convert</span>.ToInt32(mycommand.Parameters[<span style="color:maroon">&quot;@KONTROL&quot;</span>].Value);</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycon.Close();&nbsp;&nbsp; </span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color:blue">return</span> sonuc;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp; }</span></p>
<p class="MsoNormal">görüldüğü üzere sadece</p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">mycommand.Parameters.Add(<span style="color:maroon">&quot;@SONUC&quot;</span>,<br />
		<span style="color:teal">SqlDbType</span>.Int);</span></p>
<p class="MsoNormal" style="text-autospace: none">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		mycommand.Parameters[<span style="color:maroon">&quot;@SONUC&quot;</span>].Direction<br />
		= <span style="color:teal">ParameterDirection</span>.ReturnValue; ve<br />
		</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">sonuc =<span style="color:teal">Convert</span>.ToInt32(mycommand.Parameters[<span style="color:maroon">&quot;@KONTROL&quot;</span>].Value);</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">satırlarını<br />
		ekledik ve geri dönüş değerini almış olduk.</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">&nbsp;</span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">Umarım bu<br />
		makale bilgilendirici olmuştur. Her türlü soru ve görüşleriniz için<br />
		email adresim </span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New"><br />
		<a style="color: blue; text-decoration: underline; text-underline: single" href="mailto:kocakemrah@gmail.com"><br />
		kocakemrah@gmail.com</a></span></p>
<p class="MsoNormal">
		<span style="font-size: 10.0pt; font-family: Courier New">bir sonraki<br />
		makalede görüşmek dileğiyle.</span></p>
<p>&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.bilyaz.com/index.php/c-ta-stored-procedure-kullanmak.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stored Procedurelere Giriş</title>
		<link>http://www.bilyaz.com/index.php/stored-procedurelere-giris.html/</link>
		<comments>http://www.bilyaz.com/index.php/stored-procedurelere-giris.html/#comments</comments>
		<pubDate>Sun, 01 Apr 2007 23:33:30 +0000</pubDate>
		<dc:creator>Emrah Kocak</dc:creator>
				<category><![CDATA[ADO.NET / SQL]]></category>
		<category><![CDATA[saklı yordam]]></category>
		<category><![CDATA[Stored procedure]]></category>

		<guid isPermaLink="false">http://www.bilyaz.com/?p=65</guid>
		<description><![CDATA[Bu ilk yaz&#305;mda size SQL server&#8217;lardaki stored procedure&#8217;lerden bahsede&#287;im. Stored procedureler SQL serverda saklanan, sql ifadelerini bar&#305;nd&#305;ran metotlar gibi d&#252;&#351;&#252;n&#252;lebilir. Veritaban&#305; programlamaya ilk ba&#351;layanlar sql ifadelerini kulland&#305;klar&#305; programlama dilinde yazarlar(c#, vb,&#8230;). bu ilk &#246;&#287;renim i&#231;in uygundur ancak ger&#231;ek hayattaki projelerde sql ifadeleri stored procedurelerde saklan&#305;r. Stored procedurler bir kere derlenirler ama programlama dilindeki SQL ifadeleri <a href='http://www.bilyaz.com/index.php/stored-procedurelere-giris.html/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.bilyaz.com%2Findex.php%2Fstored-procedurelere-giris.html%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;font=lucida grande&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px;height:30px;margin-top:5px;"></iframe><div align="left" style="float:left;padding:0px 5px 5px 0px;"><a name="fb_share" type="box_count" share_url="http://www.bilyaz.com/index.php/stored-procedurelere-giris.html/"></a></div><table width="98%" align="center" border="0" cellspacing="0" cellpadding="0">
<table width="96%" align="center" border="0" cellspacing="0" cellpadding="0">
<tr>
<td bgcolor="#FFFFFF" class="metin">
<p>Bu ilk yaz&#305;mda size SQL  server&rsquo;lardaki stored procedure&rsquo;lerden bahsede&#287;im. Stored procedureler SQL  serverda saklanan, sql ifadelerini bar&#305;nd&#305;ran metotlar gibi d&uuml;&#351;&uuml;n&uuml;lebilir.  Veritaban&#305; programlamaya ilk ba&#351;layanlar sql ifadelerini kulland&#305;klar&#305;  programlama dilinde yazarlar(c#, vb,&#8230;). bu ilk &ouml;&#287;renim i&ccedil;in uygundur ancak  ger&ccedil;ek hayattaki projelerde sql ifadeleri stored procedurelerde saklan&#305;r.  Stored procedurler bir kere derlenirler ama programlama dilindeki SQL ifadeleri  program her &ccedil;al&#305;&#351;t&#305;&#287;&#305;nda tekrar derlenir ve bu da bir zaman kayb&#305; demektir.  Di&#287;er yandan kulland&#305;&#287;&#305;m&#305;z dilde yazd&#305;&#287;&#305;m&#305;z sql ifadelerinin do&#287;ru veya yanl&#305;&#351;  oldu&#287;unu o dil anlayamaz, do&#287;ru kabul eder ve derleme a&#351;amas&#305;nda hata meydana  gelmez, ama o sat&#305;r i&#351;letilece&#287;i zaman yani run time&rsquo;da hata verir ve bu da  programlama a&ccedil;&#305;s&#305;ndan k&ouml;t&uuml; bir durumdur. Stored procedureler SQL server&rsquo;da  yarat&#305;ld&#305;ktan sonra derlenir ve hatal&#305; olup olmad&#305;klar&#305; orada anla&#351;&#305;labilir.</p>
<p>&#350;imdi basit bir stored  procedure &ouml;rne&#287;i yapal&#305;m. </p>
<p class="style3">Create  procedure deneme <br />
  As<br />
  Select * from  denemetablosu<br />
  Go</p>
<p>Bu procedure anla&#351;&#305;laca&#287;&#305;  gibi veritaban&#305;m&#305;zdaki denemetablosu isimli tablodan b&uuml;t&uuml;n verileri &ccedil;eker. Sql  c&uuml;mlesini istedi&#287;im kadar kompleks hale getirebilriz. Zaten stored  procedurelerin amac&#305; karma&#351;&#305;k sql c&uuml;mlelerini sqlde saklay&#305;p hep onu  kullanmam&#305;zd&#305;r.<br />
  SQL Query Analyzerda bu  procedure&rsquo;&uuml; kullanmam&#305;z i&ccedil;in sadece</p>
<p class="style4">deneme</p>
<p>yaz&#305;p run  tu&#351;una basmam&#305;z yeterli olacakt&#305;r. B&ouml;ylece denemetablosunda ne kadar veri varsa  onlar&#305; g&ouml;rebiliriz.</p>
<p>Stored procedureler  metotlar gibi parametre alabilir ve de&#287;er d&ouml;nd&uuml;rebilirler.<br />
  &#350;imdi onunla ilgili basit  bir &ouml;rnek g&ouml;sterelim</p>
<p class="style3">Create  procedure deneme(@deneme_ad nvarchar(50),&nbsp;  @ deneme_soyad&nbsp; nvarchar(50))<br />
  As<br />
  Select * from  denemetablosu where AD=@deneme_ad and SOYAD =@deneme_soyad<br />
  Go</p>
<p>Bu &ouml;rnek veritaban&#305;m&#305;zda  kay&#305;tl&#305; olan denemetablosu isimli tablonun AD ve SOYAD kolonlar&#305;n&#305; kontrol  ettiriyor ve e&#287;er arad&#305;&#287;&#305;m&#305;z ad ve soyadda kay&#305;tlar varsa onlar&#305;n b&uuml;t&uuml;n  kolonlar&#305;n&#305; bize g&ouml;steriyor. </p>
<p>Bu procedure&rsquo;&uuml; kullanmak  i&ccedil;in de procedure&rsquo;&uuml;n ad&#305;n&#305; yaz&#305;p yan&#305;na alaca&#287;&#305; parametreleri &ccedil;ift t&#305;rnak  i&ccedil;inde yazmam&#305;z ve run tu&#351;una basmam&#305;z yeterli olacakt&#305;r.</p>
<p class="style4">deneme &ldquo;Emrah&rdquo;,&rdquo;Ko&ccedil;ak&rdquo;</p>
<p>bu sat&#305;r i&#351;letildi&#287;i  zaman bize ad s&uuml;tununda Emrah ve soyad s&uuml;tununda Ko&ccedil;ak olan b&uuml;t&uuml;n verileri  g&ouml;sterir. <br />
  E&#287;er procedure&rsquo;&uuml;m&uuml;z  say&#305;sal bir de&#287;er al&#305;yorsa (int, decimal gibi) o zaman &ccedil;ift t&#305;rna&#287;a gerek  yoktur.</p>
<p>&#350;imdi bir de return  de&#287;eri ile ilgili biraz bilgi vermek istiyorum. Stored procedureler zaten  select komutuyla bize verileri getirirler ama bazen return de&#287;erine ihtiya&ccedil;  duyar&#305;z. Mesela veritaban&#305;na kay&#305;t yapmak istiyoruz ve kullan&#305;c&#305; ad&#305;n&#305;  belirleyici &ouml;zellik olarak atad&#305;k yani her kullan&#305;c&#305; ad&#305; birbirinden farkl&#305;  olmal&#305;. &#350;imdi b&ouml;yle bir veritaban&#305;na veri girmek istiyoruz ve kay&#305;t i&#351;leminin  olup olmad&#305;&#287;&#305;n&#305; da bilmek istiyoruz diyelim. Burada stored procedurelerin bir  &ouml;zell&#287;inden daha bahsetmek istiyorum, stored procedurelerde di&#287;er dillerdeki  gibi if, else, next,count gibi deyimleri de kullanabiliriz ve de&#287;i&#351;ken  tan&#305;mlay&#305;p onlara de&#287;er atayabiliriz. SQL serverlarda de&#287;i&#351;kenler hep ba&#351;lar&#305;na  &ldquo;@&rdquo; ifadesi konularak tan&#305;mlan&#305;r. &#350;imdi yukar&#305;da anlatt&#305;&#287;&#305;m gibi bir veritaban&#305;  i&ccedil;in kay&#305;t procedure&rsquo;&uuml; yazal&#305;m. Tablomuzun ad&#305; KAYIT olsun. 3 tane kolonu  olsun:<br />
  KULLANICI_ADI, AD, SOYAD</p>
<p class="style3">Create  procedure KAYITYAP(@KADI nvarchar(50), <br />
  @AD  nvarchar(50), <br />
  @SOYAD  nvarchar(50))<br />
  AS</p>
<p class="style3">Declare  @kayitkontrol int<br />
  Declare @sonuc  int<br />
  Set  @kayitkontrol=select count(*) from KAYIT where KULLANCI_ADI=@KADI</p>
<p class="style3">if(@kayitkontrol=0)<br />
  Begin<br />
  insert into  KAYIT(KULLANICI_ADI, AD,SOYAD) values (@KADI,@AD,@SOYAD)<br />
  set @sonuc=1<br />
  end</p>
<p class="style3">else<br />
  begin<br />
  set @sonuc=0<br />
  end</p>
<p class="style3">return @sonuc<br />
  GO</p>
<p>Yukar&#305;daki procedure&rsquo;&uuml;n  ne yapt&#305;&#287;&#305;n&#305; k&#305;saca anlatay&#305;m. &Ouml;ncelikle d&#305;&#351;ar&#305;da 3 tane de&#287;er al&#305;yor kullan&#305;c&#305;  ad&#305;, ad ve soyad i&ccedil;in. Sonra iki tane de&#287;i&#351;ken tan&#305;ml&#305;yoruz. Bu de&#287;i&#351;kenlerden  ilki<span class="style3"> @kayitkontrol</span>, tipi ise integer. Bu de&#287;i&#351;keni  veritaban&#305;nda ayn&#305; kullan&#305;c&#305; ad&#305;nda kay&#305;t var m&#305; yok mu onun i&ccedil;in kullan&#305;yoruz.<br />
  select  count(*) from KAYIT where KULLANCI_ADI=@KADI<br />
  sat&#305;r&#305;  veritaban&#305;ndaki KAYIT isimli tabloda KULLANCI_ADI s&uuml;tununda bizim girdi&#287;imiz  de&#287;erle ayn&#305; olan verilerin say&#305;s&#305;n&#305; getiriyor.<br />
  E&#287;er  veritaban&#305;nda ayn&#305; kullan&#305;c&#305; ad&#305;yla kay&#305;t yoksa bu de&#287;er 0 olarak d&ouml;ner. Kulland&#305;&#287;&#305;m&#305;z  if ifadesiyle de e&#287;er bu de&#287;er 0 ise o zaman kay&#305;t yap diyoruz.<br />
  Kulland&#305;&#287;&#305;m&#305;z  ikinci de&#287;i&#351;ken <span class="style3">@sonuc</span> ise return de&#287;eri olarak kullan&#305;l&#305;yor.  Tipini integer olarak atad&#305;k. E&#287;er kay&#305;t i&#351;lemi yap&#305;l&#305;rsa 1 de&#287;erini at&#305;yoruz  yap&#305;lamad&#305;ysa 0 de&#287;erini atay&#305;p d&ouml;nd&uuml;r&uuml;yoruz ve kulland&#305;&#287;&#305;m&#305;z aray&uuml;z program&#305;  da bu de&#287;eri &rdquo;kay&#305;t yap&#305;ld&#305;&rdquo; ya da &ldquo;yap&#305;lamad&#305;&rdquo; gibi kullan&#305;c&#305; taraf&#305;ndan  anlaml&#305; olan c&uuml;mlelere d&ouml;n&uuml;&#351;t&uuml;r&uuml;r. Bu i&#351;lem tabi ki &ccedil;ok &ccedil;e&#351;itli &#351;ekillerde de  yaz&#305;labilir, o programc&#305;n&#305;n d&uuml;&#351;&uuml;ncesine kalm&#305;&#351;t&#305;r.</p>
<p>Stored  procedurelerde return de&#287;eri sadece matematiksel tipler olmal&#305;d&#305;r. Mesela  yukar&#305;daki &ouml;rnek i&ccedil;in e&#287;er return de&#287;erine &ldquo;kayd&#305;n&#305;z ba&#351;ar&#305;yla yap&#305;ld&#305;&rdquo;  &#351;eklinde string bir ifade d&ouml;nd&uuml;rseydik bu ifadeyi aray&uuml;z program&#305;m&#305;zda kullanamazd&#305;k.  &Ouml;yle return de&#287;erleri atay&#305;p procedure&rsquo;&uuml;m&uuml;z&uuml; derledi&#287;imizde hata yaz&#305;s&#305;  g&ouml;remeyiz ama bu &#351;ekilde yapman&#305;n bir anlam&#305; yoktur ve yanl&#305;&#351;t&#305;r.</p>
<p>Biraz da  stored procedureleri d&uuml;zenlemeden bahsetmek istiyorum. &Ouml;rne&#287;in kay&#305;tyap  procedure&uuml;m&uuml;z&uuml; de&#287;i&#351;tirmek istiyoruz &ccedil;&uuml;nk&uuml; tablomuza bir s&uuml;tun daha ekledik, o  zaman procedure&rsquo;&uuml; yarat&#305;rken kulland&#305;&#287;&#305;m&#305;z &ldquo;create&rdquo; ifadesi yerine &ldquo;alter&rdquo;  yazmam&#305;z yeterli olacakt&#305;r. Sonra alaca&#287;&#305; de&#287;erleri tabloya g&ouml;re d&uuml;zenler ve  procedurede istedi&#287;imiz de&#287;i&#351;ikli&#287;i yapabiliriz</p>
<p>Bu yaz&#305;mda  sizlere stored procedureler ile ilgili giri&#351; i&ccedil;in bir bilgi vermeye &ccedil;al&#305;&#351;t&#305;m. Di&#287;er  yaz&#305;lar&#305;mda stored procedurelerin c#ta kullan&#305;m&#305;n&#305; b&uuml;t&uuml;n y&ouml;nleriyle incelemee  &ccedil;al&#305;&#351;aca&#287;&#305;m. G&ouml;r&uuml;&#351;mek &uuml;zere&#8230;</p>
<p>Emrah KO&Ccedil;AK <br />
  kocakemrah@gmail.com</p>
</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.bilyaz.com/index.php/stored-procedurelere-giris.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

