Stored Procedurelere Giriş
02 Nisan 2007 – 01:33|
Bu ilk yazımda size SQL server’lardaki stored procedure’lerden bahsedeğim. Stored procedureler SQL serverda saklanan, sql ifadelerini barındıran metotlar gibi düşünülebilir. Veritabanı programlamaya ilk başlayanlar sql ifadelerini kullandıkları programlama dilinde yazarlar(c#, vb,…). bu ilk öğrenim için uygundur ancak gerçek hayattaki projelerde sql ifadeleri stored procedurelerde saklanır. Stored procedurler bir kere derlenirler ama programlama dilindeki SQL ifadeleri program her çalıştığında tekrar derlenir ve bu da bir zaman kaybı demektir. Diğer yandan kullandığımız dilde yazdığımız sql ifadelerinin doğru veya yanlış olduğunu o dil anlayamaz, doğru kabul eder ve derleme aşamasında hata meydana gelmez, ama o satır işletileceği zaman yani run time’da hata verir ve bu da programlama açısından kötü bir durumdur. Stored procedureler SQL server’da yaratıldıktan sonra derlenir ve hatalı olup olmadıkları orada anlaşılabilir. Şimdi basit bir stored procedure örneği yapalım. Create procedure deneme Bu procedure anlaşılacağı gibi veritabanımızdaki denemetablosu isimli tablodan bütün verileri çeker. Sql cümlesini istediğim kadar kompleks hale getirebilriz. Zaten stored procedurelerin amacı karmaşık sql cümlelerini sqlde saklayıp hep onu kullanmamızdır. deneme yazıp run tuşuna basmamız yeterli olacaktır. Böylece denemetablosunda ne kadar veri varsa onları görebiliriz. Stored procedureler metotlar gibi parametre alabilir ve değer döndürebilirler. Create procedure deneme(@deneme_ad nvarchar(50), @ deneme_soyad nvarchar(50)) Bu örnek veritabanımızda kayıtlı olan denemetablosu isimli tablonun AD ve SOYAD kolonlarını kontrol ettiriyor ve eğer aradığımız ad ve soyadda kayıtlar varsa onların bütün kolonlarını bize gösteriyor. Bu procedure’ü kullanmak için de procedure’ün adını yazıp yanına alacağı parametreleri çift tırnak içinde yazmamız ve run tuşuna basmamız yeterli olacaktır. deneme “Emrah”,”Koçak” bu satır işletildiği zaman bize ad sütununda Emrah ve soyad sütununda Koçak olan bütün verileri gösterir. Şimdi bir de return değeri ile ilgili biraz bilgi vermek istiyorum. Stored procedureler zaten select komutuyla bize verileri getirirler ama bazen return değerine ihtiyaç duyarız. Mesela veritabanına kayıt yapmak istiyoruz ve kullanıcı adını belirleyici özellik olarak atadık yani her kullanıcı adı birbirinden farklı olmalı. Şimdi böyle bir veritabanına veri girmek istiyoruz ve kayıt işleminin olup olmadığını da bilmek istiyoruz diyelim. Burada stored procedurelerin bir özellğinden daha bahsetmek istiyorum, stored procedurelerde diğer dillerdeki gibi if, else, next,count gibi deyimleri de kullanabiliriz ve değişken tanımlayıp onlara değer atayabiliriz. SQL serverlarda değişkenler hep başlarına “@” ifadesi konularak tanımlanır. Şimdi yukarıda anlattığım gibi bir veritabanı için kayıt procedure’ü yazalım. Tablomuzun adı KAYIT olsun. 3 tane kolonu olsun: Create procedure KAYITYAP(@KADI nvarchar(50), Declare @kayitkontrol int if(@kayitkontrol=0) else return @sonuc Yukarıdaki procedure’ün ne yaptığını kısaca anlatayım. Öncelikle dışarıda 3 tane değer alıyor kullanıcı adı, ad ve soyad için. Sonra iki tane değişken tanımlıyoruz. Bu değişkenlerden ilki @kayitkontrol, tipi ise integer. Bu değişkeni veritabanında aynı kullanıcı adında kayıt var mı yok mu onun için kullanıyoruz. Stored procedurelerde return değeri sadece matematiksel tipler olmalıdır. Mesela yukarıdaki örnek için eğer return değerine “kaydınız başarıyla yapıldı” şeklinde string bir ifade döndürseydik bu ifadeyi arayüz programımızda kullanamazdık. Öyle return değerleri atayıp procedure’ümüzü derlediğimizde hata yazısı göremeyiz ama bu şekilde yapmanın bir anlamı yoktur ve yanlıştır. Biraz da stored procedureleri düzenlemeden bahsetmek istiyorum. Örneğin kayıtyap procedureümüzü değiştirmek istiyoruz çünkü tablomuza bir sütun daha ekledik, o zaman procedure’ü yaratırken kullandığımız “create” ifadesi yerine “alter” yazmamız yeterli olacaktır. Sonra alacağı değerleri tabloya göre düzenler ve procedurede istediğimiz değişikliği yapabiliriz Bu yazımda sizlere stored procedureler ile ilgili giriş için bir bilgi vermeye çalıştım. Diğer yazılarımda stored procedurelerin c#ta kullanımını bütün yönleriyle incelemee çalışacağım. Görüşmek üzere… Emrah KOÇAK |

