İçindekiler

Stored Procedured Nedir?

Prosedür, belli bir işlevi yerine getirmek için özellikle yapılandırılmış program parçacıklarıdır. Nesneye dayalı programlama dilleri bu kadar popüler değil iken, programlar prosedürler  yada fonksiyon denilen parçacıklardan oluşurdu. Bir prosedür, başka bir prosedür içerisinde çağrılabilir.

Stored prosedürler,  SQL içindeki prosedürlerdir. SP olarak anılırlar. SP , sıklıkla kullanılan işlemler için yazılmış kodların bir defa yazılıp çok defa kullanılması böylelikle de programlamayı kolaylaştırmayı amaçlamaktadır. SP’ler, veri tabanında saklanan ve gerektiğinde ismi ile çağrılabilen SQL bloklarıdır.

Bir SQL komutu çağrıldığında ayrıştırma , derleme ve çalıştırma aşamalarından geçmektedir. SP’ler önceden derlenmiş olduğu için , normal kullandığımız bir SQL sorgusunda olduğu gibi bu 3 aşamadan geçmez, bu özelliği sayesinde programımızın performansı artmaktadır ve ağ trafiğini de azaltmış oluruz, istemci tarafından bir çok satıra sahip SQL komutunun sunucuya gitmesindense, sadece saklı yordamın adının sunucuya gitmesi ağı daha az meşgul etmiş olur. Bir kez yazıp tekrar ve tekrar kullandığımız için modüler bir yapıda program geliştirmiş oluruz.

Program içerisinde aynı SQL sorgularını kullanacağımız zaman, bunu saklı yordam haline getirerek, stored procedure leri kullanarak sadece ismini çağırma işlemi gerçekleştirebiliriz. Belirli girdi ve çıktı parametreleri olduğu için, saklı yordamların kullanımı ile güvenlik açısından kendimizi sağlama almış oluruz.

Stored Procedure Tipleri :

  • Extended Stored Procedure :  Genellikle *.dll şeklinde derlenmiş prosedürlerdir.
  • CLR Stored Procedure : SQL Server 2005’den itibaren CLR ortamındaki herhangi bir dili kullanarak da stored procedure’ler kodlayabiliriz.
  • Sistem Stored Procedure : Genellikle sp_ ön eki ile başlarlar ve hepsi master veri tabanında tutulur.
  • Kullanıcı Tanımlı Stored Procedure : Programcının yani bizim programladığımız stored procedurlerdir.

Store Procedure Genel Yapısı :

Parametresiz Stored Procedure Oluşturmak :

Stored Procedure’lerin genel yapısı:  

    CREATE  PROC[EDURE] prosedür_adı
    [ WITH Seçenekleri ]
    AS
       SQL ifadeleri
    GO

Yukarıda gördüğümüz gibi Create Proc veya Create Procedure deyimi ile başlıyoruz ve prosedürümüzün ismini yazıyoruz. WITH seçeneği  stored procedure’un içinde bulunan kaynak kodlarını gizlemek için kullanılır. Bu bölüm isteğe bağlıdır, istenilirse kullanılmayabilir. Create Procedure ile AS deyimleri arasına , ilerde bahsedeceğim ,  parametreli stored prosedürler için değişken tanımlaması yapılır. Parametresiz prosedürler için herhangi bir tanımlama yapılmaz, AS yazılarak devam edilir. AS’den sonra prosedürün içine yazacağımız SQL ifadelerini yazarız ve GO deyimini de ekleyerek prosedürümüzü tamamlamış oluruz.

GO deyimi zorunlu değildir ama programı ciddi hatalardan kurtarır.

Prosedürü yazdıktan sonra bir kez çalıştırırız.

Prosedürü daha sonradan çağırmak için ;

EXEC prosedür_adı  

 kodunu yazarız.

Örnek 1: Parametresiz stored prosedürü

Daha önceden oluşturduğumuz veri tabanımızda bulunan Employee tablomuzdan J harfi ile başlayan kişileri listeyen SQL sorgusunu yazalım.

SELECT Fname AS Isim, SSN AS ‘Sosyal Güvenlik Numarası’

FROM Employee

WHERE Fname LIKE ’%J%’

Sonuç : 

Store Procedure Nedir, Nasıl Kullanılır?

Eğer bu sorguyu prosedür şeklinde yazmak istersek ;

Store Procedure Nedir, Nasıl Kullanılır?

İlk önce prosedürümüzü bir kez çalışıyoruz.

Prosedürümüzü çağırmak için;  

EXEC JArama 

kodunu yazıp çalıştırırsak gene aynı sonucu elde ederiz.

Parametreli Stored Procedure Oluşturmak :

Daha önce yukarıda bahsedildiği gibi değişken tanımını CREATE PROCEDURE  ile AS deyimleri arasına yazarız.Değişkenin başına @ işareti koyulur. Parametreli Stored Procedure yapısı aşağıdaki gibidir.

CREATE PROCEDURE  prosedür_adı

@değişken_adı

AS

SQL ifadeleri

GO

Parametreli prosedürü çağırırken ;

EXEC prosedür_adı istenilecek_deger 

Örnek 2: Parametreli Store Procedure

Dışarıdan girilen Employee tablosundaki bir isim bilgilerini getiren parametreli stored prosedürü yazalım.

Store Procedure Nedir, Nasıl Kullanılır?

Sonuç :

Store Procedure Nedir, Nasıl Kullanılır?

Yazdığımız her stored prosedür oluşturduğumuz veya çalıştığımız veri tabanı içindeki Programmability in altında Stored Procedure klasörünün içinde birikmektedir. Yazdığımız prosedürü silmek istersek buradan silebilir veya yazdığımız prosedürleri buradan görebiliriz.

Store Procedure Nedir, Nasıl Kullanılır?