SQL Server'da Stored Procedure

'Programlama' forumunda sha. tarafından 12 Eyl 2009 tarihinde açılan konu

Konu etiketleri:
  1. sha.

    sha. ..daha çirkin, daha huysuz

    [​IMG]

    Stored Procedure
    Stored Procedure'ler database server'da saklanan SQL ifadeleri gibi düşünülebilir. Bir programlama dilindeki fonksiyonlar gibi parametre alabilirler. Bu parametrelere göre bir sorgu çalıştırıp cevap gönderilebilir.

    Stored Procedure'ler database server'ında saklanmasından dolayı daha hızlı çalışırlar. Bir stored procedure ilk çalıştırıldığı zaman derlenir. Bir daha çalıştırılınca derlenmeden çalışırlar. Halbuki bir program içinden SQL ifadeleri ile server'a bağlanırsanız her bağlanışta SQL ifadesi derlenir. Bu da zaman kaybı demektir.

    Stored procedure'un diğer bir özelliği ise programlama deyimleri içermesidir. if, next vs.. programlama dillerindekine benzer özellikleri sunar. Gelen parametrelere göre sorgu yapılıp sonucun dönmesi sağlanabilir.


    SQL Server ile Stored Procedure hazırlanabilir. Bir database yaratıldığı zaman Stored Procedures klasörüde yaratılır. O klasörün üstünde sağ tıklanarak yeni bir stored procedure yaratılabilir.

    [​IMG]


    Bir sql ifadesi stored procedure olarak saklanabilir. Örneğin "select * from Kisiler" bir stored procedure olarak saklanabilir. Ancak daha çok parametre alan Stored Procedure'ler kullanılır. Örneğin aşağıda basit bir stored procedure bulunmakta

    CREATE PROCEDURE TEST_PRO
    @yas int
    AS
    SELECT * FROM kisi WHERE YAS > @yas ORDER BY yas

    [​IMG]

    CREATE ile TEST_PRO adında bir procedure yarattık. Parametre olarak bir int yas alıyor. Stored Procedure'lerde alınan parametrelerin tipi verilmek zorundadır. Birden fazla parametre alınabilir. Parametreler arasına virgül koyulur.
    AS ile çalıştırılacak SQL ifadesi yazılır.
    SQL ifadesinde KISI tablosunda verilen yaştan daha büyük yaştaki kişileri alıyoruz. Paramtreler @ işareti ile kullanılırlar.
    Programlama deyimleri de kullanılabilir.
    Örneğin if,else kullanılabilir.

    CREATE PROCEDURE TEST_PRO
    @yas int
    AS
    İf (yas>19)
    SELECT * FROM kisi WHERE > @yas ORDER BY YAS
    Else
    SELECT * FROM kisi WHERE > @yas AND ERISKIN=1 ORDER BY YAS​
     

Bu Sayfayı Paylaş