Sp(Stored Procedure) Nedir

2 Eyl by NURULLAH ÇAKIR

Sp(Stored Procedure) Nedir

Uygulama içersinde her seferinde kullanmanız gereken veritabanı seviyesindeki kod bloklarını database içersinde stored procedure’ler vasıtasıyla tutabilirsiniz. Aynı işlemi her kod bloğunu uygulama içersinden her seferinde tekrar göndererek te sağlayabilirsiniz fakat sp’ler her zaman daha hızlı olacaktır. Çünkü sp’ler sadece ilk çalıştığında derlenirler ve bir execution plan alırlar. execution plan ile ilgili detayları execution plan adlı makalemde bulabilirsiniz. Daha sonraki çalışmalarında yeniden derlenmeden, bir önceki çalıştıklarında aldıkları execution plan’ı alarak çalışacaklardır. Derleme sürecine takılmadığı için performans olarak daha hızlı çalışacaktır. Fakat her seferinde aynı execution plan ile çalışması bazen parameter sniffing problemine yol açabilir. Parameter sniffing ile ilgili detayları Parameter Sniffing ile ilgili makalemde bulabilirsiniz.

 

Ayrıca uygulama seviyesindeki işlem mantığını tek bir yerde(veritabanında sp içersinde) tutarak daha kolay anlaşılabilir bir uygulama geliştirmenize de katkı sağlayacaktır.

 

Sp’ler parametre alarak sonuç döndürebilirler. Örneğin Kutuphane isminde Id ve KitapAdi kolonlarına sahip bir tablomuz olsun. Tabloyu aşağıdaki script yarmıyla veritabanınızda oluşturabilirsiniz.

CREATE TABLE [dbo].[Kutuphane](
	[Id] [int] NULL,
	[KitaAdi] [varchar](500) NULL
) ON [PRIMARY]

GO

Tablomuzu oluşturduktan sonra aşağıdaki script yardımıyla sp’mizi oluşturalım.

 

CREATE PROCEDURE KitapAdi
@Id int  --parametre
AS
 
BEGIN
      SET NOCOUNT ON;
      SELECT KitapAdi from Kutuphane
      WHERE Id = @Id
END

Oluşturduğumuz sp Id değerini parametre olarak alıyor ve o Id değerinin sahip olduğu KitapAdi değerini döndürüyor.

 

Tablomuza aşağıdaki script yardımıyla 2 tane satır ekleyelim.

INSERT INTO [dbo].[Kutuphane]([Id],[KitapAdi])VALUES(1,'Bir İstanbul Masalı')
INSERT INTO [dbo].[Kutuphane]([Id],[KitapAdi])VALUES(2,'Kadıköyde Bir Akşam')

Sp’yi aşağıdaki şekilde çalıştırdığınızda size aşağıdaki gibi bir kayıt döndürecektir.

 

EXEC dbo.KitapAdi 2

 

 

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir