SQL Server Üzerinde Stored Procedure Anlamak ve Kullanmak

Bu yazımda  Sql Server üzerinde Store Procedure kullanımını, sıfırdan başlayan bir yazılımcının anlayacağı şekilde anlatmaya çalışacağım. Öncelikle “Store Procedure” ne olduğunu hakkında bilgiler veriyim. “Store Procedure” veritabanı üzerinde saklanan yordamlardır.  Yordamlar dışarıdan parametre alabilir ve geriye veri veya bilgi gönderebilirler.

Fonksiyon yazmamızın bir nedeni, yazılan kodun birden fazla kez kullanımını sağlamaktır.

İşte “Store Procedure” burada yazmış olduğumuz sql komutlarımızdır. Bir kere yazdıktan sonra derlenir ve istediğimiz kadar çağırabiliriz.

Veritabanımızı bir yerden başka bir yere taşıdığımızda, “Store Procedure” leride taşımış oluruz.

Veritabanımızda “Programmability -> Store Procedure” düğümünde  yer alırlar.

“Peki istemci üzerinden Sql Komutları göndermek varken, neden veritabanı üzerinden yordam oluşturup işleri daha karmaşık hale getirelim” diye sorabilirsiniz. Araştırmalara göre normal komut satırlarına göre çok daha performanslı olduğu ortaya çıkmış.

Ağ trafiğini büyük ölçüde azaltıyor.

İstemci programları üzerinde taşınması yerine veritabanı içinde daha güvenli yerde saklanıyor.

BİLGİ

“Store Procedure” kolay olmasına rağmen, kodları yazarken bir kaç söz dizimini bilmeniz gerekiyor. Bu arada “Store Procedure” içerisinde döngüler, koşullar vs.. kullanabilirsiniz.

YORUM SATIRLARI

“Store Procedure” üzerinde yorum yapmak için iki tane seçeneğiniz mevcut.

-- =============================================
-- Author:		Çağdaş KARADEMİR
-- Create date: 01.09.2010
-- Description:	Ürünlerin İçerisindeki tüm liste sayısını verir
-- =============================================

— işareti ile sadece satırı yorum haline getirebiliriz.

/*
=============================================
Author:		Çağdaş KARADEMİR
Create date: 01.09.2010
Description:	Ürünlerin İçerisindeki tüm liste sayısını verir
=============================================
*/

Diğeri ise /* */ işareti ile satır arasında kalan tüm metini yorum haline getirebiliriz.

İSİMLENDİRME

“Store Procedure”‘de isimlendirme yapılırken genellikle spProsedürAdı şeklinde yapılması, okunabilirliği arttırıyor.

Örnek : spUrunEkle, spUrunGetir, spUrunSil vs..

GİRİŞ

Parametre almayan prosedür oluştururken alttaki yapı kullanılır.

Create PROCEDURE <procedure adi>
As
Begin
<Çalıştırılacak Sql Komutları>
End

Begin – End arasında kalan yer kapsam anlamına gelir. Buradaki anlamı Procedure içindeki kapsamı gösteriyor. Aynı şekilde While döngüsü, If koşulu  kullanmak istediğinizde Begin – End ile kapsamı belirtebilirsiniz.

Şimdi bu haliyle Urunler tablosunun tüm satırlarını getiren bir prosedür yazalım.

CREATE PROCEDURE spUrunleriGetir
AS
BEGIN

	SELECT Urunler.UrunID,Urunler.UrunAdi FROM Urunler

END
GO

Çalıştırma yaparken ise “EXEC ProsedürAdı” veya “EXECUTE  ProsedürAdı” komutlarını kullanarak yapıyoruz.

EXEC spUrunleriGetir

PARAMETRE ALAN PROSEDÜR YAPMAK

Parametre alan bir fonksiyon yazmak istediğimizde ise prosedür adından sonra parantez içinde parametreleri veriyoruz. Fakat parametre verirken @ işaretini kullanıyoruz. Ayrıca parametrelere varsayılan değerde atama yapabiliyoruz.

Create PROCEDURE <procedure adi>
(<parametre adi,parametre tipi> <varsa varsayılan değeri>)
As
Begin
<Çalıştırılacak Sql Komutları>
End

Yukarıdaki gördüğünüz iskelete göre aşağıda @ParamID adlı parametre ile sadece o kaydı getirmiş oluyoruz.

CREATE PROCEDURE spUrunGetir
(
@ParamID INT
)
AS
BEGIN

	SELECT Urunler.UrunID,Urunler.UrunAdi FROM Urunler WHERE [email protected]

END

Bu prosedürün kullanımı ise

EXEC spUrunGetir 1

İstersek parametrelere varsayılan değerde atama yapabiliyoruz.

CREATE PROCEDURE spUrunGetir
(
@ParamID INT=0
)
AS
BEGIN

	SELECT Urunler.UrunID,Urunler.UrunAdi FROM Urunler WHERE [email protected]

END

GERİYE DEĞER DÖNDÜREN PROSEDÜRLER

Geriye değer döndüren prosedürleri anlamak için birkaç terimi daha bilmemiz gerekiyor.

Bunlardan birisi out veya output anahtar kelimesidir. Bu kelimeleri kullanarak, hangi parametrenin değer döndürdüğünü SQL SERVER’a tanıtıyoruz.

SQL SERVER içinde değişken tanımlamak için DECLARE anahtar kelimesini kullanıyoruz.

Kullanımı

DECLARE <@DegiskenAdi> <degisken türü>

Şimdi Urunler tablosundaki, bir ürünün StokAdedini geri döndüren prosedürü yazalım. ID parametresini alarak da sadece bir tane ürünün kaydın döndürelim.

CREATE PROCEDURE spUrunAdetGetir
(
@UrunID INT,
@UrunAdet INT OUTPUT
)
AS
BEGIN

	SELECT @UrunAdet=Urunler.StokAdedi FROM Urunler WHERE [email protected]

END

“@UrunAdet INT OUTPUT” kullanarak @UrunAdet adlı parametrenin OUTPUT anahtar kelimesi sayesinde geriye değer döndürdüğü belirtiyorum.

Kullanımı ise;

DECLARE @Adet INT
EXECUTE spUrunAdetGetir	@UrunID = 1, @[email protected] out
SELECT @Adet

şeklindedir.

This entry was posted in Microsoft Sql Server, Veritabanları and tagged , , , , , , , . Bookmark the permalink.

3 Responses to SQL Server Üzerinde Stored Procedure Anlamak ve Kullanmak

  1. sadık says:

    teşekkürler hocam yeni başlayanlar için baya iyi olmuş

  2. Faruk says:

    Güzel bir yazı olmuş.Teşekkürler paylaşımınız için

  3. asli says:

    Emeğinize sağlık gayet açıklayıcı olmuş 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *