Stored procedure güvenlik, hızlılık ve verimlilik gerektiren veritabanı uygulamalarında sıkça kullanılan bir yapıdır. Bu yapı ile ilgili daha önce yazdığım yazıya
buradan ulaşabilirsiniz.
En basit ifadeyle stored procedure şu şekilde oluşturulur.
CREATE PROCEDURE [Procedure İsmi](
--Girilecek parametre isimleri buraya yazılacak
)
AS
BEGİN
--İlla BEGİN-END kullanmak zorunda mıyız? -Hayır, kullanılmasada olur.
END
Stored procedure ler bir defa derleniyor demiştik. Eğer her defasında derlenilmesi isteniyorsa "AS" den önce "WITH RECOMPİLE" kullanılması yeterli.
Şimdi aşağıdaki örnek resime odaklanalım. "spOgrenciEkle" isimli stored procedure oluşturulmuştur. Begin-end içerisine girdiğimizde "Declare" kod yapısı ile @bak isimli değişken oluşturulmuştur. Bu arada değişkenler oluşturulurken "declare" komutu başa yazılarak oluşturulur. Değişken isminin önünde de "@" sembolü kullanılır. Aynı zamanda değişkenin veri tipi de değişken isminden sonra belirtilir.(Aşağıdaki örnek: "declare @bak int"). Sonrasında öğrenciler tablosunda aynı T.C. Numarasına ait kayıt olup olunmadığına bakılıyor. Select sorgusundan dönen değeri @bak değişkenine atamıştık. Eğer @bak değişkeninden dönen değer sıfır olursa aynı veri olmadığı anlamına gelir. Eğer o şekildeyse veritabanına kayıt gerçekleştirmek için ilgili sql ifadesi kullanılmıştır.
IF yapısı normal programlama dillerindeki yapıya çok benzerdir. "{}" kapsam işaretlerinin yerine begin-end takısı almıştır. Şart kodlarımızı begin-end arasına yazıyoruz.
Şimdi yukarıdaki örnek resime odaklanalım. "spOgrenciEkle" isimli stored procedure oluşturulmuştur. Begin-end içerisine girdiğimizde "Declare" kod yapısı ile @bak isimli değişken oluşturulmuştur. Bu arada değişkenler oluşturulurken "declare" komutu başa yazılarak oluşturulur. Değişken isminin önünde de "@" sembolü kullanılır. Aynı zamanda değişkenin veri tipi de değişken isminden sonra belirtilir.(Aşağıdaki örnek: "declare @bak int"). Sonrasında öğrenciler tablosunda aynı T.C. Numarasına ait kayıt olup olunmadığına bakılıyor. Select sorgusundan dönen değeri @bak değişkenine atamıştık. Eğer @bak değişkeninden dönen değer sıfır olursa aynı veri olmadığı anlamına gelir. Eğer o şekildeyse veritabanına kayıt gerçekleştirmek için ilgili sql ifadesi kullanılmıştır.
IF yapısı normal programlama dillerindeki yapıya çok benzerdir. "{}" kapsam işaretlerinin yerini begin-end takısı almıştır. Şart kodlarımızı begin-end arasına yazıyoruz.
Stored procedure çağırmak için "exec" ifadesini kullanıyoruz.
exec <stored procedure ismi> varsa parametreler.
Aşağıdaki sorgu sonucunda dönen değer "0" olduğuna göre bu demek oluyorki veritabanında bu tc numarasına ait kayıt yokmuş ve bu sebepten dolayı veritabanı kayıt eklenmiş bulunmaktadır.
Bu yazıda sizlere kısaca stored procedure oluşturmadan bahsettim. Aynı zamanda sql de IF şartlı ifadesini ve değişken oluşturmayada değinmiş olduk. Stored procedure kavramıyla ilgili sorularınız varsa yorum olarak yazabilirsiniz. Bir başka yazıda görüşmek üzere. İyi çalışmalar.