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

 


نویسنده:
تاریخ: 1394/11/18 - 00:00
دسته بندی: sql
برچسب ها:
بازدید: 1934
نظرات

نظر شما
نمونه کارها
درباره ما گروه نرم افزاری داده پردازی شمال با استعانت از درگاه حضرت حق و تکیه بر نیروی جوانی و استعداد گروه از سال 1388 کار خود را بصورت رسمی آغاز کرده است و مجموعه اعضای گروه از افراد بسیار مجرب در حوزه کاری خود می باشند.
اطلاعات تماس
  • آدرس: چالوس خ 17 شهریور، روبروی خیابان کوروش،جنب بانک صادرات ایران،پاساژ مومنی، مرکز داده پردازی شمال
  • تلفن همراه 24 ساعته:09125633603
  • تلفن تماس:01152227485
  • تلفکس:01152227485
  • ایمیل:info@arsnet.ir