Stored Procedure Kullanımı Ve Avantajları

Merhabalar,

Bir önceki yazımızda View kullanımı anlatırken artıları ve eksileri ile detaylı olarak bahsetmiştik.Bu yazımızda ise aslında view’ın eksiklerini kısmi olarak kapatabilecek özelliklerle karşımıza çıkan “Stored Procedure” kısaca ‘sp’ kullanımını anlatıyor olacağım.

Eğer icra ettiğiniz meslekte veri tabanı ile uğraşıyorsanız sp’ler ile bol bol karşılaşmışsınızdır ya da mutlaka karşılaşacaksınızdır. Zira bir tablodan veri çekmek temel sorgularla yapılabilir ya da bu görev view’a bırakılabilir.

Peki ya performans ?

Evet, konumuz veri tabanı ve yönetimi ise, söz konusu sunucumuzu fazla yormadan isteğimizi gerçekleştirmek önceliğimiz olmalıdır. Bunun için de sp’lere başvurmak durumundayız. Hedefimiz doğru, hızlı ve güvenli şekilde bizden istenileni yerine getirmektir.

Stored Procedure Avantajları

1.Hız

Stored Procedure oluşturduğumuzda bu sorguyu bir kere çalıştırdığımızda sistem bunu derler ve sonrakilerde tekrar tekrar çalıştırmaz. Daha önce çalıştırıldığında hafızaya alır ve oradan tekrardan çalıştırır. Normal sorgu çalıştırmak istediğimizde ise bunu her seferinde ilk kez karşılaşmış gibi yeniden çalıştırır. Bu da hız açısından pek avantajlı değildir.

2.Parametre Kullanımı

Bir tablo düşünün ve bu tabloda sürekli olarak değişen parametrelere göre rapor çekmek durumunda kalıyorsunuz.Ya da programınızda müşteri numarası girildiğinde, o numara ile birbirine joinlenmiş birkaç tablo üzerinden arama yaparak dönen sonuçları son kullanıcıya gösterecek şekilde bir yapınız mevcut. Bu tarz durumlarda parametre kullanımı büyük bir ihtiyacı karşılamaktadır.

3.Esneklik

Stored procedure içinde stored procedure kullanımına izin veren bu yapı ile dilediğimiz işlemleri gerçekleştirebiliriz. Bir başka detay olarak update, insert kullanımına izin verir. Bu da view yapısının eksikliklerini kapatma konusunda avantaj sağlamaktadır.

Bir başka kolaylığı ise yazılan programlarda sıklıkla benzer sorgular kullandığınızı düşünelim. Bu durumda bu sorgulardan birinde değişiklik yapmak istiyorsunuz ama nerelerde kullanıldığı konusunda tam emin değilsiniz. İşte tam da bu noktalarda sp kullanıp, düzenlenmesi gereken sorguyu sp’de güncelleyerek arkanıza yaslanabilirsiniz. 😊

Stored procedure avantajlarından bahsettikten sonra, şimdi kullanımını görelim .

STORED PROCEDURE KULLANIMI

CREATE PROCEDURE

Genel kullanımı ;

CREATE PROCEDURE Procedure_İsmi AS BEGIN SORGULAR END 

şeklindedir.

NOT : CREATE PROCEDURE yerine CREATE PROC şeklinde de kullanılabilir.

Eğer parametre alacak şekilde proc yazmak istiyorsak ;

 CREATE PROCEDURE Prosedür_İsmi @parametre_ismi [veri_tipi] AS BEGIN SORGULAR END 

Şimdi bu kullanımları örnekler üzerinden parametre almadan ve parametre alacak şekilde iki farklı kullanımla inceleyelim.

NOT : Örneklerin tamamı NORTWIND veri tabanı üzerinden yapılacaktır.

ÖRNEK :

Müşteri tablosundaki şehirleri sayısı azalacak şekilde sp oluşturalım.

CREATE PROCEDURE sp_SehirGetir AS BEGIN SELECT City, COUNT(City) FROM dbo.Customers GROUP BY City ORDER BY COUNT(City) DESC END 

Görüldüğü üzere oluşturduğumuz sp’yi exec komutu ile çalıştırabiliriz.

Şimdi de parametre kullanarak bir sp oluşturalım.

 CREATE PROCEDURE sp_CustomerOrder @ORDER_ID INT AS BEGIN SELECT * FROM dbo.Orders WHERE OrderID=@ORDER_ID END

Şeklinde bir kullanım ile dışardan vereceğimiz bir parametreye için Order tablosundan değerleri görüntüleyebiliriz.

ALTER PROCEDURE

Daha öncesinde oluşturulmuş olan procedure için güncelleme komutudur. Parametre eklemek, tablo içerisine data eklemek ya da farklı bir tablo ile joinlemek gibi durumlarda ihtiyacımız olduğunda kullanırız.

Genel kullanımı ;

ALTER PROCEDURE Değişecek_Prosedür_İsmi PARAMETRELER AS BEGIN SORGULAR END 

Örnek :  

ALTER PROCEDURE sp_CustomerOrder @ORDER_ID INT AS BEGIN SELECT O.OrderID,O.CustomerID,c.CompanyName,c.Address,c.City,c.Country,O.OrderDate,O.Freight FROM dbo.Orders AS O JOIN dbo.Customers AS C ON O.CustomerID=C.CustomerID WHERE OrderID=@ORDER_ID ORDER BY C.CompanyName END 

Örnek :

 CREATE PROCEDURE sp_CustomerOrderProduct @CustomerId NVARCHAR(50),@ProductName NVARCHAR(50) AS BEGIN SELECT C.CustomerID,O.OrderID,P.ProductID,C.CompanyName,O.OrderDate,P.ProductName,P.UnitPrice FROM dbo.Customers AS C JOIN dbo.Orders AS O ON C.CustomerID=O.CustomerID JOIN dbo.[Order Details] AS OD ON O.OrderID=OD.OrderID JOIN dbo.Products AS P ON OD.ProductID=P.ProductID WHERE C.CustomerID=@CustomerId and P.ProductName=@ProductName ORDER BY O.OrderID END 

Görüldüğü üzere böylesine fazla tablo kullanımına ihtiyaç duyduğumuzda, bu tabloları her seferinde birbirine joinleyerek yazmak oldukça zahmetli olacaktır. Fakat burada sp’lerin performans bakımından avantajlarından yararlanmak ve sorgularımızı bir kere derleyip sonrasında istediğimiz yerde kullanabilmek oldukça pratiktir.

DROP PROCEDURE

SQL Server üzerinde tanımladığımız Stored Procedure’leri silmek için aşağıdaki komutu kullanabiliriz.

 DROP PROCEDURE Prosedür_İsmi 

Örneğin ;

 DROP PROCEDURE sp_SehirGetir 

komutunu çalıştırdığımızda artık sp silinmiş olacaktır.

Bu yazımızda Stored Procedure yapısının avantajlarını, genel kullanımlarını,view yapısından farklarımı parametre kullanımıyla birlikte görmüş olduk. Umarım faydalı olmuştur.

Bir sonraki yazımızda görüşmek üzere. Hoşça kalın.

Bir cevap yazın

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