
Merhaba arkadaşlar Birçoğumuzun iş yükünü hafifleten yada bilmeyenler için kullanmalarının iş yüklerini minimize edeceğini bilmeleri gereken bir konuya giriş yapacağız. MSSQL Server'ı projenizde kullanıyorsanız ve sürekli bir veri alış verişi yapmanız gerekiyorsa ilk yapmayı düşüneceğiniz yol aşağıdaki gibi olabilir.[...]
1.Yol - Veritabanı yapısına her gerektiğinde işlem yapacak olan sql sorgularını çalıştırmak.Elbette bu sorguların her seferinde sql client'a istek-sonuç sırasıyla bağlantıda bulunduğunu düşünürsek projenizin performansında oldukça farkedilebilir yavaşlıklar yaşatacağı kaçınılmazdır.Sorgularınız sabit olacağından karar yapılarını çok sık kullanacak ve dolayısıyla fazladan kod yazacağınızı söyleyebilirim.
Eğer projenizin veritabanı kontrolünü derli toplu sorgularınızı tek bir yerde yapabileceğiniz ve kendi içerisinde karar yapılarını oluşturabilen aynı zamanda da hızlı bir sorgulama yapan birşeyler olsa? Heralde çok işinize yarayabilirdi. Evet bahsettiğim şey belki bir çoğunuzun duyduğu yada gözüne takılan Stored Procedure kontrolleridir. Profesyonel yazılımcıların bir çoğunun kod yapıları içerisinde sql sorguları yazmadığını söyleyebilirim.Projenin kontrolü açısından stored procedure yapısında gerekli olan tüm sorgular fonksiyonelleştirilebilir.Stored Procedure lerin özelliklerinden en belirgin olanları ise şunlardır;
- Veritabanı içerisinde çalışırlar,dışarıdan parametre alarak işlem yaparlar.
- Bir kez derlenmeleri yeterlidir,zaman kazandırır böylece
- MSSQL Server içerisinde çalışmaları nedeniyle dışarıdan gönderilen sorgulara göre daha hızlıdır.
- Aldığı parametreye göre tekil yada çoğul değerler döndürebilirler.
- Niteliğindeki yapı itibari ile kendi içerisinde fonksiyonelliğe bürünebilirler,kod yazmayı azaltırlar.
Şimdi kısaca nasıl stored procedure oluşturabileceğimize bakalım;
Resimlerde gördüğünüz adımları takip ederek yeni bir stored procedure oluşturabilirsiniz.
Bu bölümde SQL dilini kullanarak yeni procedure yaratabilir, dışarıdan alacağı değişkenleri ve karakter tiplerini belirtebilir ve ardından yapmasını istediğimiz işlemi yazabiliriz. Bunu veritabanı işlemlerinizi hızlandırmak daha az kod yazmak için oluşturduğumuz data access layer sınıflarına benzetebilirsiniz. Tek farkı daha performanslı, sql server içerisinde tutulan ve daha dinamik bir avantaj sunmasıdır.
CREATE PROCEDURE ifadesi ile yeni bir procedure ismi tanımlanır.
CODE:
CREATE PROCEDURE deneme
CODE:
@kadi varchar[30].
gibi bir tanımlama ile kadi ismindeki bir değişkenden değer alacağımızı ve bunun aldığı değerin yine sql server üzerindeki kadi alanının değeri olan varchar[30] ile eşit olması gerektiğini belirttik.
AS ifadesinden sonra yapılması istenen durum sorgusu tanımlanır.
CODE:
SELECT * FROM uyeler WHERE kadi = @kadi
Stored Procedure kullanmanın en büyük avantajlarından bir diğeride sorgularınızı projenizi derleyip çalıştırıp denediğiniz anda değil birebir yazarken aynı zamanda test ediyor olmanızdır.Böylece hızlı syntax kontrolü yapmış oluyorsunuz.
Kullanırken oluşturduğumuz procedure ismi ve alacağı değeri belirtmemiz yeterlidir.
Örneğin bu örneğimizdeki procedure kadi ni getiriyor. Bunu kullanırken ise;
CODE:
deneme 'Oguzz'
şeklinde getirebiliriz. Stored Procedure konusuna böylece giriş yapmış olduk. Bu konuya daha farklı özellikleriyle ve c# ile beraber kullanımlarına değineceğim ilerleyen günlerde..
Oguzz
oguz@thecoders.net
16 Haziran 2011 17:44