Stored Procedure Nedir ?

Stored Procedure

Merhabalar bugünki yazımızda Stored Procedure konusunu ele alacağız.

Stored Procedure’ler veri tabanımızın olmazsa olmazıdır. Yazılım projelerinde en çok tercih edilen yapıdır. Belli parametreler alıp bu paremetrelerle belirli bir işlemi yapmaktadır. En önemli özelliği veritabanında saklanır ve başta bir defa derlenir daha sonraki çalışmalarda derlenmez. Yani yeniden Execuiton Plan oluşmaz. Buda bize performans sağlar.

Procedür kullanmak yapılan işlemlerde okunurluğu arttırır. Başka kişiler inceleme yaparken daha rahat bir şekilde inceleme yapar.

Fonksiyonlara çok benzemektedir. Ama aralarında temek farklar vardır. Bunları daha sonra ele alacağız.

Kullanım Şekli


CREATE PROCEDURE  
	-- Parametreleri ekliyoruz
	<@Param1, sysname, @p1>  = , 
	<@Param2, sysname, @p2>  = 
AS
--Özelliğimizi belirliyoruz.
WITH  { RECOMPILE | ENCRYPTION }
BEGIN
--Yapılacak işlemler.
	SET NOCOUNT ON;
	SELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2>
END
GO

  • RECOMPILE: Procedure her çalıştığında tekrardan Execuiton Plan oluşturmasını istiyorsak bunu belirmemizi sağlamaktadır.
  • ENCRYPTION: Procedure şifreler. Sadece sysadmin ve sahibi düzenleme yapabilir.
  • SET NOCOUNT ON; Genel olarak kullandığımız özellilktir. Normal sorgular çalıştığında 3 satır etkilendi yazısı vermektedir. Prodedürlerde buna genellikle gerek olmamaktadır. Bu özellik onu kapatmaktadır.

Örnekler

North wind veri tabanı üzerinde çalışmalarımızı yapıcaz.

  • Kategori eklemesi yapan procedürü yazınız.

CREATE PROCEDURE AddCategory 
	-- Parametreleri ekliyoruz
	@KategoriAdı nvarchar(50),
	@Açıklama nvarchar(50)
AS
--Özelliğimizi belirliyoruz.
BEGIN
--Yapılacak işlemler.
	SET NOCOUNT ON;
	INSERT INTO Categories(CategoryName,Description) VALUES (@KategoriAdı,@Açıklama)
END
GO

Procedürümüzü oluşturduk. 2 değişken almaktadır. Bunlar, KategoriAdı ve Açıklamasıdır. Bu 2 değişkeni Kategori tablosuna eklemektedir.

Procedürümüzü kullanma zamanı 🙂


EXEC AddCategory 'KategoriAdı','Açıklama'

Procedürümüzü bu şekilde çalıştırıyoruz ve sonucunda kaydımız eklemiştir.

  • Kategori adına göre silme yazan procedürü yazınız.

CREATE PROCEDURE DeleteCategory 
	-- Parametreleri ekliyoruz
	@KategoriAdı nvarchar(50)
AS
--Özelliğimizi belirliyoruz.
BEGIN
--Yapılacak işlemler.
	SET NOCOUNT ON;
	DELETE FROM Categories WHERE CategoryName=@KategoriAdı
END
GO

Procedürümüzü oluşturduk. 1 değişken almaktadır. Buda, KategoriAdı’dır. Bu değişkeni Kategori tablosundan silmektedir.

Procedürümüzü kullanma zamanı 🙂


EXEC DeleteCategory 'KategoriAdı'

KategoriAdı isimli kategorimiz silinmiştir.

  • Tüm kategorilerin açıklamasını temizleyen prosedür yazınız.

CREATE PROCEDURE UpdateCategory 
AS
--Özelliğimizi belirliyoruz.
BEGIN
--Yapılacak işlemler.
	SET NOCOUNT ON;
	UPDATE Categories SET Description=NULL
END
GO

Prosedürümüz bir değişken almadı bu sefer çünkü tüm kayıtları günccellicektir.

Procedürümüzü kullanma zamanı 🙂


EXEC UpdateCategory 'KategoriAdı'

Tüm kategorilerimizin açıklaması silinmiştir.

Stored Procedure İsimlendirilmesi

Genellikle stored procedure oluştururken başına sp_ eklenir. Bunu yapmanızı önermem çünkü sistem kendisi oluşturduğu prosedürleri sp_ ön eki yapmaktadır ve sizin oluşturduğumuz isimlendirmede sp_ olunca biraz performans sorunu teşkil edebilir.

Yazımızın sonuna geldik. Diğer yazılarımızıda incelemeyi unutmayınız.

E-bültene Abone Ol Merak etmeyin. Spam yapmayacağız.

Yazar

Kocaeli Üniversitesi Bilişim Sistemleri Mühendisliğini bitirip sektörde veri tabanı mühendisi olarak göreve başladım.

İlgili Yazılar

2 yorum

Elinize sağlık, faydalı bir yazı olmuş

Cevapla
Eren Çaylak  -  9 Haziran 2020 / 12:27

Çok teşekkürler.

Cevapla

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Hızlı yorum için giriş yapın.

Başka Yazı Yok

Kayıt Ol

Zaten üye misiniz? Giriş Yap

Giriş Yap

Henüz üyeliğiniz yok mu? Kayıt Ol