Tweet

Stored Procedure ve Temel Yapısı

uploads/20110627-153713-1.png 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;

http://i56.tinypic.com/flfudw.jpg

http://i54.tinypic.com/148ljyu.jpg

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

İlgili Olabilecek Makaleler


Yorumlar (2)





Dia
21 Haziran 2011 23:48
Büyük çapda veritabanı uygulamaları yazarken stored procedure kullanmak şart oluyor. Çünkü kodlar ile yaptımız veritabanı işlerininin birçogunu stored procedureler ile çok daha hızlı yapabiliyoruz. Bu makale çok daha önce yazılmalıydı ama iş yoğunluğu bizleri halsiz ve hevessiz yapıyor. Vakti ve zamanı olan arkadaşlarda içeriği güçlendirmek için pek çaba gösterdikleri söylenemez. Oğuz bir sen birde ben varız. Makale güzel olmuş vakit buldukça yazmaya devam.


Oguzz
22 Haziran 2011 15:35
Ben fırsat buldukça bildiklerimi paylaşmaya gayret gösteriyorum Okan zaten az ve öz olmak önemli.Benim Felsefem bilginin öğretilmesi/paylaşılmasını taşıyor.Stored Procedure olayını bilmeme rağmen biraz tembellikten veritabanı işlemlerini data access layerlar üzerinden yada entity framework ile hallediyordum.İşyerinde yürüttüğüm son ERP projesinde yoğun veri trafiği yüzünden stored procedure kullanmaya karar vermiştim.Önceki işlerimize göre performans oldukça artmıştı ve harcadığımız zaman yarı yarıya inmişti.Sorguların tek bir yerde derli toplu durmasıda hoşuma gitmişti zaten sql içerisinde tutulduğundan ve if else gibi karar yapılarıyla fonksiyonellik katabiliyor olmamız cazip gelmişti.

Ziyaretçi olarak yorum yazamazsınız. Üye olmak için tıklayın Üye iseniz giriş yapın.



MENÜ » FORUM
Menü » Takip et
RSS Facebook Twitter Friendfeed
Sık Kullanılanlar Google Yahoo Live
Menü » Paylaş
E-Posta ile gönder Twitter Facebook Friendfeed
Buzz Stumbleupon Delicious Digg