MSSQL’de Stored Procedure

Rukiye Demirci
3 min readDec 16, 2020

--

Stored Procedure Nedir?

Belli bir işlevi veya amacı yerine getirmek ya da belli işlemleri daha kolay kullanabilmek için oluşturduğumuz yapıya stored procedure denir.

Örneğin büyük bir projede çok sık kullanılan ve karmaşık bir kod var. Bu kodu her defasında yeniden yazmak hem network trafiğini artırır hem de zamandan kaybederiz. Stored procedure olarak oluşturursak hem performans açısından hem de sürekli aynı kodu yazmak yerine istediğimiz zaman kullanıp işlemlerimizi daha kolay hale getirebiliriz. Yani yazdığımız bir kodu veri tabanında saklayıp istediğimiz zaman kullanmamızı sağlayan bir yapıdır.

Aslında stored procedure leri beynimizdeki bellek olarak adlandırılan yapılara benzetebiliriz. Beynimizde öğrendiğimiz bilgilerin saklanması ve gerekli durumlarda geri çağrılması yetisine bellek denir. Beynimizi veri tabanı olarak düşünürsek Stored Procedure de beynimizdeki belleklere benzetebiliriz.

Stored Procedure Nerelerde Kullanılır?

  • Raporlama işlemlerinde veya kritik raporlarda güvenliği sağlamak için stored procedure bazında yetki vererek kullanılır.
  • Toplu işlemler yaparken kullanılır.
  • Her procedure erişim yetkimiz olmayabilir ya da bir procedure çok fazla yerde kullanılıyordur bu yüzden müdahale etmemiz riskli olabilir. Bu gibi durumlarda bir stored procedure le oluşturduğumuz çıktıyı tabloya aktarabiliriz. Böylece hem istediğimiz işlemleri kolayca yaparız hem de stored procedure ün yapısını bozmamış oluruz.
  • Stored procedure ler veriye erişim kontrolünü sağlamakla birlikte bilginin tutarlı bir şekilde girilmesini dolayısıyla veri bütünlüğünü sağlarlar.
  • Birbiriyle ilişkili işlemleri daha kolay ve daha kontrollü olarak yapmak için kullanılır. Örneğin, bir bankada hesaba açma veya hesap silme işlemleri için stored procedureler kullanılabilir.

Stored Procedure Türleri Nelerdir?

Dört çeşit Stored Procedure vardır.

1. Sistem Stored Procedure: Veri tabanında sistemsel ve yönetimsel işlemler için kullanılan işlemlerdir. Master veri tabanı üzerinde tutulurlar.

2. Kullanıcı Tabanlı Stored Procedure: Kullanıcıların ihtiyaçları sebebiyle oluşturduğu stored procedure lere denir.

3. Extended Stored Prodecure: Genelde .ddl olarak derlenmiş ve veri tabanı SERVER’ın işlevselliğini artırmak için kullanılır. Yalnızca Master veritabanında tutulur.

4. CLR Stored Procedure: Managed Code’un SQL SERVER üzerinde çalışmasını sağlayan teknolojiye CLR denir. CLR ortamında herhangi bir dili kullanarak oluşturulan stored procedure lere denir.

Stored Procedure Özellikleri

  • Parametreli, parametresiz ya da geriye değer döndüren stored procedure ler oluşturulabilir.
  • Stored procedure içinde DML (select,insert,update ve delete) komutlarını kullanabiliriz.
  • Stored procedure içinde If-else ve while yapılarını kullanabiliriz.
  • Stored procedure içinde fonksiyon çağırabiliriz.
  • stored procedure ün özelliği en son ne zaman çalıştırıldı, kaç kere çalıştırıldı, ne kadar CPU harcıyor gibi özellikleri görebiliyoruz.

Bir Stored procedure oluşturmak istediğimizde Kod yapısı temel olarak şu şekildedir:

CREATE PROCEDURE SP_NAME(stored procedure vermek istediğimiz isim)
AS
BEGIN
— SORGULARIMIZIN OLDUĞU ALAN
END

Stored Procedure çalıştırmak için EXEC ifadesi kullanılır.

Örneğin bir detaylı satış raporu oluşturmak istiyorum. Bunu bir stored procedure halinde yazarsak performanstan, zamandan ve düzenleme yapmada kolaylık sağlar.

Bu stored procedure 2 parametre alır. Bunlar baslangıç tarihi ve bitiş tarihi olarak belirlediğimiz değişkenlerdir. Stored procedure çağırırken de 2 parametre girerek çağırırız.

Stored Procedure Çağırmak için Yazılan Kod

Son olarak stored procedure lerin avantajlarından bahsedelim.

  1. Network trafiğini azaltarak performansı artırır.
  2. Stored Procedure derlenmiş bir yapıda olduğu için daha hızlı çalışır.
  3. Toplu işlemler kendi içinde çalıştığı için stored procedure RAM hızında çalışır. Bu yüzden daha hızlıdır.
  4. SQL injection saldırılarına karşı güvenlidir.
  5. Kolay güncelleme yapılır.
  6. Store procedure ler birbiri içerisinde çağrılabilir.

--

--