تفاوت Stored Procedure و Function در SQL Server

Stored Procedure های اشیایی هستند که در اولین بار کامپایل شده و  فرمت آن ذخیره می شود (کد کامپایل شده) و در دفعات بعدی میتوان آن را فراخوانی کرد و این مورد خود باعث افزایش سرعت اجرای آن می شود . اما Function  ها  در هر بار فراخوانی آنها ، ابتدا کامپیل و اجرا میشوند .


تفاوت های پایه :
1- Function ها حتما باید مقداری را به عنوان خروجی برگردانند در صورتی که در Stored Procedure ها اختیاری می باشد (Procedure می تواند صفر یا n مقدار برگرداند).
2- Function های فقط می توانند پارامترهای ورودی داشته باشند در صورتی که Stored Procedure ها می توانند پارامتر های Input و Output داشته باشند .
3- Function ها میتوانند از داخل یک Stored Procedure فراخوانی شوند در حالی که نمیتوان در داخل یک Function اقدام به فراخوانی یک Procedure کرد .

تفاوت های پیشرفته :


1- Stored Procedure ها اجازه استفاده از دستور SELECT را به خوبی می دهند و همچنین دستورات (DML(insert,update,delete در حالیکه Function ها فقط اجازه استفاده از دستور SELECT را دارند .
2- Stored Procedure  ها نمی توانند در داخل دستورات SELECT استفاده شوند درحالیکه Function می تواند در داخل دستورات SELECT جاسازی شود .
3- Stored Procedure  ها نمی توانند در هر جای دستورات SQL استفاده شوند ، برای نمونه نمی توانند در قسمت های WHERE/HAVING,SELECT استفاده شوند در حالیکه این محدودیت برای Function وجود ندارد .
4- می توان در داخل Stored Procedure ها استثنا ها را با استفاده از بلوک های try-catch مدیریت کرد در حالیکه در داخل Function نمی توان بلوک های try-catch را مورد استفاده قرار داد .
5- Function ها می توانند یک Table را در خروجی برگردانند که این Table میتواند در داخل دستورات Join با جداول دیگر مورد استفاده قرار گیرد .
6- مهمترین ویژگی Stored Procedure ها نسبت به Function ها نگهداری و قابلیت استفاده مجدد execution plan می باشد درحالیکه برای Function ها هربار کامپایل می شود .


توسط : عثمان رحیمی  1 ماه قبل ، دوشنبه 20 بهمن 1393 ساعت 19:59  0  7039

نظر شما برای ما مهم است و به ما در بهبود سایت کمک میکند.


ارسال نظر
  • نام (اختیاری ) :
  • پست الکترونیک :
  • توضیحات :

مطالب مرتبط