SQL Server Store Procedure (Saklı Yordam) Kullanımı

Merhaba arkadaşlar, bu yazımda SQL Server Store Procedure kullanımını anlatacağım. Bu yazımı okuyan arkadaşların Store Procedureler ve kullanımları hakkında bilgi sahibi olmasını sağlamaya çalışacağım.

Öncelikle Store Procedurelerin ne olduğu hakkında biraz bilgi vermem gerekirse, Store Procedureler veritabanı üzerinde saklanan SQL cümleleri yani yordamlardır. Store Procedureler parametre alarak veya parametresiz kullanılırlar. Bu procedureler sayesinde veritabanı üzerinde bazı işlemler yapabilir ya da gerekli sorguları yazdığımız zaman bize veri döndürmelerini sağlayabiliriz. Bir kez  yazıp derlediğimiz zaman veritabanı altında Programmability > Store Procedure düğümü altında bulunur.

Peki neden istemciden (programımızdan) Sql komutları göndermek varken ayrıca veritabanı üzerinde Store Procedureler oluştururuz? Çünkü Store Procedureler yalnızca ilk çalışmasında birkez derlenir daha sonra çağırıldıklarında derlenmeden çalışırlar ve veritabanı üzerinde çalıştığı için daha hızlı çalışırlar. İstemci program üzerinde bulunmak yerine veritabanı içinde oldukları için veritabanının taşındığı her yerde vardırlar. Bu sayede de SQL kodlarımız ile programlama dili ile yazdığımız kodların ayrışmış vaziyette bulunmalarını sağlar.

KULLANIMI

  • Parametre almayan Procedure kullanımı

 

 

CREATE PROCEDURE ibaresinden sonra Procedure e vermek istediğimiz ismi yazarız. BEGIN ve AND arasında kalan alan kapsam anlamına gelir. Çalıştırılacak kodlar bu kapsam arasına yazılır.

Örneğin Kisiler tablosunda bulunan tüm kayıtları getirmek için yazmamız gereken Procedure aşağıdaki gibi olacaktır.

 

 

Peki bu Store Procedure nasıl çalıştırılır? Bunu da EXECUTE veya EXEC komutu ile yaparız.

 

Komutunun çalıştırılması ile bize dönen sonuç aşağıdaki gibidir.

  • Parametreli Store Procedure kullanımı

 

 

Yine Kisiler tablosundan bir Procedure ile örneklendirelim.

 

 

Parametreli Store Procedure de parametresizden farklı olarak sorguda kullanılacak olan parametre, başına ‘@’ işareti konularak Procedure adından sonra yazılır. Yanına bu parametrenin tipi tabloda kullanıldığı gibi yazılır. Parametreler istenildiği kadar artırılıp azaltılır. Daha sonra BEGIN ve END aralığına parametreli sorgu yazılır. Çalıştırma kısmında ise parametresiz sorguda olduğu gibi EXEC komutu ile çalıştırılır ancak burada farklı olarak procedure de istenen parametre değerleri de buradan yollanır.

 

 

Yazdığımız parametreli Store Procedure deki Adi parametresine ’Nur’ değerini Yas parametresine ise 24 değerini gödererek Procedure u çalıştırdık. Bunun sonucunda bize dönen sonuç aşağıdaki gibidir.

  • Silme işlemi yapan Procedure kullanımı

 

Silme işlemi yapan bir procedure yazmak istiyorsak parametre olarak Id yi kullanırız dedim ancak bu zorunlu bir kural olarak düşünülmemelidir. Sileceğimiz kayda Id sinden ulaşabiliriz mantığı ile bunu not düştüm fakat farklı şekilde de kullanılabilir.

Yine Kisiler tablomuzdan faydalanarak bir kaydı silme işlemi yapan procedure yazalım.

 

 

Yukarıdaki kod çalıştırılıp silme işlemi yapan Procedure oluşturulduktan sonra yine EXEC komutu ile bu Procedure çalıştırılı. Procedure çalıştırıldıktan sonra Id sini verdiğimiz kayıt silinir. Kayıt silindikten sonra tablonun son halini görmek için yukarda yazmış olduğumuz Procedure Kisiler_SelectAll u tekrar çalıştırabiliriz. Proceurelerin bir kez yazılıp derlenip tekrar tekrar çalıştırılabildiklerini zaten yukarıda belirtmiştim.

Yukarıda bulunan kod satırını çalıştırğım zaman aşağıdaki sonucu elde ederim. Gördüğünüz gibi 1 numaralı Id ye sahip Nur isimli kayıt silindi.

  • Güncelleme işlemi yapan Procedure kullanımı

Güncelleme yapan Procedurede de en az iki parametre kullanılır.İlk parametreile güncelleme yapılacak olan kayıt belirlenir. Farklı bir kullanıma gidilmediği sürece kayıt belirleyici parametre Id dir. Diğer parametre ise kayıtta değişiklik yapılacak olan kolondur. Yine Kisiler tablosu üzerinden örneklendireceğim.

 

 

Yukarıda ki Procedure de Id si verilen kaydın Adi alanı parametre olarak yollanan değer ile değiştirilsin böylece o kayıt güncellensin isteniyor.

 

Update Procedure yukarıda bulunan komutlar ile çalıştırılıyor ve aşağıdaki çıktıda gördüğünüz gibi Id si 4 olan kaydın Adi alanına ‘UpdateNur’ stringi yazılıyor.

Procedureler ile ilgili anlatacaklarım bu kadar Soru ve görüşleriniz için yorum yapabilirsiniz. Kolay gelsin .. 🙂

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir