SQL Server konusunda
kısa kısa ipuçları vereceğim bu yazı dizimde ilk olarak Stored Procedure ile
Function arasındaki farklardan bahsetmek istiyorum. Siz değerli bilişimci arkadaşlar elbette
ikisi arasındaki farkları merak ediyorsunuzdur.
Bu yazımda kısaca ikisi arasındaki ortak noktalardan ve farklardan
bahsedeceğim.
İkisi arasındaki
ortak özelliklerden bahsedecek olursak
Her ikiside bir
veritabanında saklanır. Yani içinde bulunan T-SQL ifadeler ağ üzerinden
gönderilmez. Buda ağ trafiğini aşağıya düşürür. Her ikiside yanlızca bir kez
derlenir. İlk kez çalıştığında execution plan cache belleğe alınır. Tekrar
tekrar çağrıldığında performansı büyük ölçüde artar.
Aralarındaki
Farklara Gelecek olursak
Basit Farklar
- Function mutlaka bir değer döndürmesi gerekirken Stored Procedurde bu isteğe bağlıdır. (Stored Procedur 0 veya n değerlerini döndürebilir.)
- Functionlar sadece input parametrelerine sahip olabilirken stored procudrler input/output parametrelerine sahip olabilir.
- Functionlar stored prosedürden çağrılabilirken stored prosedürler function üzerinden çağıralamazlar.
- Functionlar SELECT deyimi ile çağrılabilir. Stored Prodesedürleri çalıştırmak için Execute/Exec komutu kullanılmalıdır.
Gelişmiş Farklar
- Prosedür, SELECT'in yanı sıra DML (INSERT / UPDATE / DELETE) ifadesine izin verirken, Fonksiyon sadece SELECT ifadesine izin verir.
- Procedur bir SELECT deyiminde kullanılamazken, Function bir SELECT ifadesinde kullanılabilir.
- Stored Prosedürler WHERE/HAVING/SELECT bölümünün herhangi bir yerinde kullanılamazken Functionlar kullanılabilir.
- TRY-CATCH bloğu bir stored prosedürde kullanılabilirken, TRY-CATCH bir functionda kullanılamaz.
- Stored Prosedüre Transaction yapısı ile kullanılabilirken Function Transaction yapısını desteklemez.