تفاوت‌های Stored Procedure و Function ها در SQL Server
اندازه‌ی قلم متن
تخمین مدت زمان مطالعه‌ی مطلب: یک دقیقه

در این مقاله سعی شده است به تفاوت‌های Stored Procedure و Function‌ها در SQL Server به صورت مختصر و مفید بپردازیم:
  1. Function‌ها حتما باید مقدار بازگشتی داشته باشند ولی مقدار بازگشتی در *SP‌ها به صورت اختیاری است. یک SP می‌تواند از صفر تا n خروجی داشته باشد.
  2. Function‌ها تنها می‌توانند پارامترهای ورودی داشته باشند ولی SP‌ها علاوه بر پارامترهای ورودی، می‌توانند پارامتر خروجی نیز داشته باشند.
  3. Function‌ها می‌توانند از داخل SP‌ها صدا زده شوند ولی SP‌ها قابل فراخوانی از داخل Function‌ها نیستند.
  4. Function‌ها تنها می‌توانند دستورات Select را اجرا کنند ولی SP‌ها می‌توانند تمامی دستورات را از قبیل Select, Delete, Insert و... اجرا نمایند.
  5. Function‌ها قابل فراخوانی از طریق دستورات Select هستند ولی SP‌ها این قابلیت را ندارند.
  6. Function‌ها قابلیت استفاده به صورت مستقیم را در دستوراتی مانند Having، دارند ولی SP‌ها این گونه نیستند.
  7. Function‌ها در هربار استفاده کامپایل می‌شوند لیکن SP‌ها می‌توانند یکبار کامپایل شده، execution plan آنها برای استفاده آتی نگهداری شوند. این مهمترین تفاوت این دو می‌باشد.
  8. استثناء و خطاها در SP‌ها قابل دریافت توسط Try...Catch می‌باشند ولی در Function‌ها این قابلیت وجود ندارد.
  9. در SP‌ها می‌توان از Transaction‌ها استفاده کرده و آنها را مدیریت نمایید؛ لیکن Function‌ها این چنین امکاناتی را ندارند.
در کل به خاطر داشته باشیم اگر تفاوت امکانات متفاوت یک محصول را بهتر درک کنیم، می‌توانیم از آنها بهتر استفاده نماییم.
*SP: Stored Procedure