SQL Server üzerinde çalışan birçok raporlama ve geliştirici aracında SELECT ifadelerinden farklı olarak stored procedure şeklinde kaydedilebilen sorgular kullanılmaktadır. Stored procedure, sistem yönetimi görevleri de dahil olmak üzere çoğu T-SQL işlemini kapsayan bir yapıdır. Bu bölümde stored procedure’leri öğreneceğiz.

Stored Procedure Nedir?

Stored procedure bir T-SQL batch türüdür ve CREATE PROCEDURE komutuyla oluştulur. Birçok sunucu ve veri tabanı komutunu kapsamaktadır. Ayrıca client uygulamalarda API işlevi görmektedir. Bu arada önceliğimiz SELECT ifadeleri olduğundan bu bölümde sadece SELECT ifadeleriyle çalışan sp’lere değineceğiz.

Sp’lerde INSERT, UPDATE, DELETE ve diğer T-SQL komutları da kullanılabilmektedir. Ayrıca veri tabanı ve client uygulama arasında aracı katman olarak kullanılabilir. Böylelikle geliştirici ve yöneticiler input değerini test ederek işleyen ve hataları uygun şekilde ele alan bu yapıyla tüm işlemlerini rahatça halledebilirler. Bahsettiğimiz API yapısında şunlar bulunabilir:

  • Veri çekebilen view veya tablo fonksiyonları
  • Manipülasyon veya karmaşık validasyon işlemleri için kullanılan sp’ler
  • Insert, update veya delete işlemleri için kullanılan sp’ler

Kullanıcılara orijinal tabloyu kullandırmak yerine bu nesnelere erişim izni verilebilir. Kodu içinde barındırarak bakımı da kolaylaştıran bu yaklaşımla ekstra güvenlik katmanı sağlanmış olur. Böylelikle kullanıcılar diğer araçlardan verilere erişirken bu nesneleri kullanırlar.

Stored Procedure Nasıl Çalıştırılır?

İlk bölümlerde, sistem sp’lerinin nasıl çalıştırıldığını öğrenmiştik. Kullanıcı tanımlı sp’ler de aynı mekanizmayla çalıştırılmaktadır. Bir sp’yi çalıştırmak için şu adımları izlemeniz yeterli:

  • EXECUTE (EXEC) komutu ardından sp ismini yazın. Raporlama aracınızda varsa sp’leri isme göre sıralayan grafik arayüzünü de kullanabilirsiniz.
  • Kullandığınız sp parametre alıyorsa bunları değişken-değer ikilisi şeklinde belirtin. Örneğin parametre custid ve değer 5 ise @custid=5 ifadesi işinizi görecektir. Birden çok parametre kullanacaksanız bunları virgülle ayırmayı unutmayın.
  • Değişkenleri uygun veri türüyle kullanın. Sp örneğin NVARCHAR alıyorsa vereceğiniz değer unicode string (N’string’) olmalıdır.
  • Sp’de SELECT sorgusu çalıştırmak için ayrıca işlem yapmanıza gerek yok. Sp içerisinde OUTPUT parametresi bulunuyorsa o zaman ek işlem yapmanız gerekebilir. Sonraki bölümlerde sp’lerdeki OUTPUT parametreleri konusuna değineceğiz, oraya göz atabilirsiniz.

Not: Procedure isminden önce EXEC komutunun kullanılmadığı durumlar olabilir. Bu kullanım, sp batch’in ilk satırında (veya tek satırlı bir batch’te) çalışabilmektedir fakat best practice değildir, yani EXEC kullanmanızı tavsiye ediyoruz.

Sonraki bölümde görüşmek üzere.

KAYNAK:
Execute a Stored Procedure
Stored Procedures (Database Engine)