Stored Procedure kısaca SQL sorgularını isteğimize göre hazırlayıp kullanıma hazır veri tabanı nesnesine çeviren bir araçtır. Stored Procedure, Türkçeye saklı yordam olarak çevrilmiştir. Veri tabanı sunucuları içerisinde saklanır. Bu önemli bir performans kazancı anlamına gelir. Stored Procedure bize güvenli bir yapı sunarlar. Değişiklik yapmaya elverişli yapılardır. Stored Procedure güvenlik katmanı olarak da kullanılabilir.
Bir veri tabanını başka bir yere taşıdığımız zaman SP’leri de taşımış oluruz. Bir prosedür, başka bir prosedür içerisinde çağrılabilir. Bir programlama dilindeki fonksiyonlar gibi parametre alabilirler. Bu parametrelere göre bir sorgu çalıştırıp cevap gönderilebilir. Bir SQL komutu çağrıldığında derleme, ayrıştırma ve çalıştırma aşamalarından geçmektedir. Bir stored procedure ilk çalıştırıldığı zaman derlenir. Bir daha çalıştırılınca derlenmeden çalışırlar. Stored Procedure'ler önceden derlenmiş olduğu için, normal kullandığımız bir SQL sorgusunda olduğu gibi bu 3 aşamadan geçmez, bu özelliği sayesinde programımızın performansı artmaktadır ve ağ trafiğini de azaltmış oluruz.
İstemci tarafından bir çok satıra sahip SQL komutunun sunucuya gitmesindense, sadece saklı yordamın adının sunucuya gitmesi ağı daha az meşgul etmiş olur. Bir kez yazıp tekrar ve tekrar kullandığımız için modüler bir yapıda program geliştirilmesi sağlanır. Stored Procedure'lerin diğer bir özelliği ise programlama deyimleri içermesidir. if, next, set vs.. Stored Procedure'ler sadece giriş ve çıkış parametreleri uygulama katmanında göründüğü için daha güvenilirdir.
Stored Procedure’in faydalarını şu şekilde özetleyebiliriz. Hızlı çalışırlar. Güvenli bir yapı sergilerler. Önemli performans kazancı sağlarlar. Bir SQL sorgusunun sonuç vermesi için gereken bazı işlemleri yapmaya gerek olmaması istemci yükünü azaltmasını sağlar. Network (ağ) trafiğinin azalmasını sağlar.
Stored procedurelerin kullanıldığı başlıca alanlar : a. Tablodan veri çekme b. Tablodan veri silme c. Tabloya veri ekleme d. Tablodaki veriyi güncelleme
Stored Procedure ile veri ekleme(insert) işlemini gerçekleştirelim. Create procedure sp_AdminEkle nvarchar(max) ) As Begin Insert Into Adminler (AdiSoyadi, KullaniciAdi, End exec sp_AdminEkle Alper Karadeniz', sa', '123'
Stored Procedure ile veri ekleme(insert) işlemini gerçekleştirelim. Tüm müsteri kayitlarini döndüren Stored Procedure CREATE PROCEDURE sp_Musteri_ReadAll AS BEGIN SET NOCOUNT ON; SELECT * from MUSTERI END GO EXEC dbo.sp_Musteri_ReadAll Store Procedure c# ile kayıt ekleme örnekleri aşağıda ki linkte mevcuttur. kullanarak-kayt-ekleme.html
ALTER PROCEDURE MakaleDenemeInsert AS SELECT CompanyName,Phone FROM Suppliers WHERE ContactTitle='Sales Representative' --burası eskiden (sales managerdı) /* Bu örnekte, görüldüğü gibi WHERE ifadesindeki ContactTitle' 'Sales Representative' olarak değiştirdik. */
CREATE PROCEDURE [Delete int AS DELETE FROM Categories WHERE GO Görüldüğü gibi burada son derece kolay bir T-SQL( Transact SQL ) cümleciği var. Burada yapılan işlem parametresine geçilen değeri CategoryID alanı ile eşleştirmek. Eğer bu parametre değerine karşılık gelen bir CategoryID değeri varsa; bu değeri taşıyan satır Categories isimli tablodan silinecektir.
Turgut Özseven-Veri tabanı yönetim sistemleri kitabı ORACLE veri tabanı eğitimi notları Prof. Dr. Ümit Kocabıçak Sakarya üniversitesi Veri tabanı ders notları.