SQL Server – Stored Procedure ve User Defined Function Arasındaki Farklar

SQL Server, Stored Procedure ve User Defined Function arasındaki başlıca farklar aşağıdaki tabloda karşılaştırılmıştır.

User Defined function Stored Procedure
1 Function geriye bir değer veya tablo döndürmek zorundadır. Stored procedure geriye değer döndürebilir veya hiçbir değer döndürmez.
2 Sadece Select ile kullanılabilir. DML işlemlerinde kullanılamaz. Select ile kullanılabileceğiz gibi, DML işlemlerinde de kullanılaibilir. (insert,update)
3 Çıkış parametreler desteklenmez. Sadece giriş parametreleri desteklenir. Hem çıkış hem giriş parametreleri kullanılabilir.
4 Try-catch yapısı ile kullanıma izin vermez. Try-cacth yapısı ile kullanıma uygundur.
5 Transaction yapısını desteklemez. Transaction yapısı ile kullanılabilir.
6 Tablo türü değişkenler ile kullanılabilir.(Temp Table) Geçiçi tablolar ile kullanıma izin vermez. Hem (Temp Table) geçici tablo hemde tablo türü değişkenler ile kullanılabilir.
7 Bir function, stored procedure çalıştıramaz. Stored Procedure function’ları çalıştırabilir.
8 Function’lar SELECT deyimi ile çağrılabilir. Stored Procedure Select/Where/Having ile çağrılamaz. Çalıştırmak için Execute/Exec komutu kullanılmalıdır..
9 Function’lar Join yapısı ile kullanılabilir. Stored Procedure’ler Join yapısı ile kullanılamaz.

Mesut Güneş

Selçuk Üniversitesi Bilgisayar programcılığı bölümünden mezun olduktan sonra birçok firmada Yazılım, İş zekası ve Veritabanı Uzmanı olarak çalıştım. Şuan Türkiye’nin en büyük şirketlerinden biri olan Doğan Online’da Veritabanı Yöneticisi olarak çalışıyorum.

You may also like...

2 Responses

  1. Fatih dedi ki:

    Son madde(9) hatalı yerlerini değiştir hocam SP lerde Join kullanılır, functionlarda kullanılmaz. Yanlış bilgilendirme olmasın….

    • Mesut Güneş dedi ki:

      Selam Fatih, yanlış bir anlaşılma olmuş sanırsam. SP’lerin içinde tabi ki join yapısı kullanılar. SP’lerin çıktısında Join yapısı kullanılmaz demek istemiştim. SP sonucunda dönen tabloyu direk başka bir tablo/view ile join yapamayız.

Bir cevap yazın

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.