3 beğenilme 0 beğenilmeme
46 gösterim

Stored Procedure nedir ?

Stored Procedure ne işe yarar ?

16 Temmuz Sql Server kategorisinde mervedemir Senior Developer (1,290 puan) paylaştı | 46 gösterim

1 cevap

0 beğenilme 0 beğenilmeme

Stored Procedure SQL’de vazgeçilmez veri tabanı objelerindendir.

Türkçemizde karşılığı saklı yordam olarak kabul edilmektedir.

Stored Procedureler SQL’de bize çok kolaylık sağlayan , sistemin yorulmasını en aza düşüren , bir kere derlendikten sonra defalarca kullanılabilen veritabanı için olmazsa olmaz nesnelerdir.

Büyük projelerde mutlaka ihtiyaç duyduğumuz objelerdir.

Bir takım SQL deyimlerinden oluşmaktadır ve özellikle C#, VB, ASP.NET tabanlı projelerimizde veri tabanı ile işlem yaparken sık sık başvurduğumuz yöntemlerdendir.

Çeşitli parametreler alır ve geriye değer döndürürler.

  • Çok hızlı çalışırlar.
  • Bir kere derlendikten sonra defalarca kullanılabilirler. Uygulama katmanında eğer SQL kodu olsaydı her çağrımda tekrar tekrar derlenecekti bu da bizim network sistemimizin yorulmasına neden olacaktı . Stored Procedure’ler bu durumum önüne geçer. (En önemli özellik)
  • Stored Procedure'de programlama dillerinde kullandığımız döngüleride (for,if,while) kullanabiliriz.
  • Güvenlik açısından da sadece giriş ve çıkış parametrelerini uygulama katmanından kullandığı için daha güvenlidir.

Genellikle 4 çeşidi bulunmaktadır.

Sistem Stored Procedure : Master veritabanında tutulan kullanımında sp_ prefixi kullanılan stored procedure lardır. Veritabanı üzerinde sistemle alakalı yönetimsel işlerde kullanılırlar.

Kullanıcı Tabanlı Stored Procedure : Uygulamalarımız için kullandığımız sp lerdir.Bu sp leri çok rahat oluşturup silebilir ve değiştirebiliriz.

Extended Stored Procedure :  Genelde .dll şeklinde derlenmiş olup Database Server ın işlevselliğini artıran bir çeşit stored procedure lerdir. Yalnız Master veritabanına eklenirler.

CLR Stored Procedure : CLR ortamında herhangi bir dili kullanarak da stored procedure ler geliştirilen bir tür Stored procedure çeşididir.

“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:		Metin POLAT
-- Create date: 16.07.2017
-- Description:	Ürünlerin İçerisindeki tüm liste sayısını verir
-- =============================================

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

/*
=============================================
Author:		Metin POLAT
Create date: 16.07.2017
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 Urunler.UrunID=@ParamID

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 Urunler.UrunID=@ParamID

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 Urunler.UrunID=@UrunID

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, @UrunAdet=@Adet out
SELECT @Adet

Şeklindedir.

16 Temmuz serhat.öcal Uzman Coder (13,350 puan) cevapladı
uzmancoder.com'a Hoşgeldiniz. Sitemiz 24.06.2017 tarihinde kurulan bir soru-cevap platformudur.

Siz de aklınıza takılan soruları sorabilir veya diğer sorulara cevaplar yazabilirsiniz.

BU AY EN AKTİF ÜYELER

    96 soru

    81 cevap

    19 yorum

    122 üye

    ×

    Bizi Takip Edin!

    Bumerang - Yazarkafe

    comodo ssl




    96 soru
    81 cevap
    19 yorum
    122 üye