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

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

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

Function ها حتما باید مقداری را به عنوان خروجی برگردانند در صورتی که در Stored Procedure ها اختیاری می باشدProcedure  می تواند صفر یا n مقدار برگرداند.

Function  های فقط می توانند پارامترهای ورودی داشته باشند در صورتی که Stored Procedure ها می توانند پارامتر های Input و Output  داشته باشند .

Function  ها میتوانند از داخل یک Stored Procedure فراخوانی شوند در حالی که نمیتوان در داخل یک Function اقدام به فراخوانی یک Procedure کرد .

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

Stored Procedure  ها اجازه استفاده از دستور SELECT را به خوبی می دهند و همچنین دستورات (DML) insert,update,delete  در حالیکه Function ها فقط اجازه استفاده از دستور SELECT را دارند .

Stored Procedure  ها نمی توانند در داخل دستورات SELECT استفاده شوند درحالیکه Function می تواند در داخل دستورات SELECT جاسازی شود .

Stored Procedure  ها نمی توانند در هر جای  دستورات SQL  استفاده شوند ، برای نمونه نمی توانند در قسمت های WHERE/HAVING,SELECT  استفاده شوند در حالیکه این محدودیت برای Function وجود ندارد .

می توان در داخل Stored Procedure ها استثنا ها را با استفاده از بلوک های try-catch مدیریت کرد در حالیکه در داخل Function نمی توان بلوک های try-catch را مورد استفاده قرار داد .

Function ها می توانند یک Table را در خروجی برگردانند که این Table میتواند در داخل دستورات Join با جداول دیگر مورد استفاده قرار گیرد .

مهمترین ویژگی Stored Procedure ها نسبت به Function ها نگهداری و قابلیت استفاده مجدد execution plan می باشد درحالیکه برای Function ها هربار کامپایل می شود .

نحوه ساخت Function در Sql Server :

میتوان مطابق با شکل زیر نیز فانکشن را ایجاد نمود

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

نحوه ساخت Stored Procedure در Sql Server :

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