Store Procedure'ler veri tabanı kullanılan projelerin olmazsa olmazıdır.Bunun en önemli nedeni Güvenlik ve Hız dır. Ado.net kullanılanılarak veri insert, update, delete işlemleri yapılan bir uygulamada Store Procedure değilde direkt olarak SqlCommand nesnesine "insert,update,delete" gibi query'ler yazmak pek önerilen bir yol değildir. Nedeni de yine az önce söylediğim gibi öncelikle hız, güvenliktir ve yazdığın kodun ne kadar profesyonelce yazıldığıyla ilişkilidir.
Store Procedure'lerde IF ELSE kullanabildiğiniz vakit emin olun uygulama tarafında yazdığınız C# kodları %30'lara kadar azalacaktır. Örnek olarak verecek olursak; database'de kayıtlı Users adında bir tablom var ve bu tablo Ad, Soyad, Email bilgilerini alarak kullanıcıları kaydediyor olsun. Store Procedure kullanarak bu kullanıcıları database'e kaydeden bir uygulama geliştirecek olduğumuzda, UserInsert ve UserUpdate işlemlerini yapan 2 adet Store Procedure ihtiyacımız var diyelim. Aslında IF ELSE kullanarak bunu bir Store Procedure ile yapmak hem daha hızlı, hemde C# tarafında bizi çok daha fazla kod yazmaktan kurtarıyor.
Users Tablosu Örneği;
CREATE PROCEDURE InsertUser //Procedure İsmi
@Ad varchar(20), //aldığı atribüt'ler
@Soyad varchar(20),
@Email varchar(20)
AS
BEGIN
DECLARE@HasExist int //Email adresine göre o kullanıcı daha önce kayıt olmuş mu diye kontol etmemizi sağlayacak olan değişken
Select @HasExist = COUNT(1)
from Users
Where Email=@Email //Bu email adresi kayıtlı mı diye bakıyoruz
IF(@HasExist=0) //Üstteki sorgudan dönen değer @HsExist değişkenine atanıyor ve eğer o kayıt var ise "0" dan farklı bir değer yok ise "0" değerini dönüyor, "0" döndüğünde yeni bir kayıt ekleyeceğimizi anlıyoruz ve aşağıda olduğu gibi Procedure'e parametre olarak gelen değerleri alıp tabloya yeni bir User ekliyoruz
BEGIN
Insert Into Users //Insert işlemi
values
(@Ad,@Soyad,@Email)
END
ELSE //Eğer @HasExist "0" a eşit değilse bu demek oluyorki bu kullanıcı database'de kayıtlı bulunmakta, bu seferde Procedure'e parametre olarak gelen değerleri alarak o kullanıcının bilgilerini aşağıda olduğu gibi Update ediyoruz
BEGIN
Update Users //Update işlemi
set
Ad =@ Ad, //bilgileri update ediyoruz
Soyad=@Soyad,
Email=@Email
WHERE Email=@Email //where koşulu O kullanıcıyı bulmamızı sağlıyor
END
END