تفاوت 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 ها هربار کامپایل می شود .
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.