استفاده یا عدم استفاده از یک تکنولوژی یا ابزار خاص، به پارامترهای
مختلفی از جمله ابعاد پروژه، مهارت و دانش اعضای تیم، ماهیت پروژه، پلتفرم
اجرا، بودجهی پروژه، مهلت تکمیل پروژه و تعداد نفرات تیم بستگی دارد.
بنابراین واضح است پیچیدن یک نسخهی خاص، برای همهی سناریوها امکان پذیر
نیست؛ اما شرایطی وجود دارد که استفاده یا عدم استفاده از این ابزارهای
تکنولوژیک منطقیتر مینمایند.
Stored Procedure
(که از این به بعد برای ایجاز، SP نوشته خواهد شد) هم از قاعده فوق مستثنی
نیست و در صورت انتخاب صحیح میتواند به ارائهی محصول نهایی با کیفیتتری
در زمان کوتاهتری کمک کند و در صورت انتخاب ناآگاهانه ممکن است باعث شکست
یک پروژه (بخصوص در بلند مدت) شود.
SQL توسط شرکت IBM در اوایل دهه 70 میلادی ایجاد شد. با اوج گرفتن زبانهای رویهای،
SQL هم چندان از این قافله عقب نماند که منجر به پذیرش SP به عنوان یک
استاندارد، در دهه 90 میلادی و پیاده سازی تدریجی آن توسط غولهای سازنده
دیتابیس شد (رجوع فرمایید به ^ و ^). این فاصله 20 ساله باعث غنیتر شدن
SQL شد و وجود SP - به معنی انتقال مدل برنامه نویسی رویهای به SQL - بخشی
از مشکلات قبلی کار با کوئریهای پشت سر هم و خام را حل کرد. از سال 2000
میلادی به بعد، ORMهای قدرتمندی از جمله Hibernate و پیاده سازیهای
مختلفی از Active Record و Entity Framework متولد شدند. بنابر این تقدم و
تاخّرهای زمانی، بدیهی است اغلب مزایای SP نسبت به Raw SQL Query و اغلب
معایب آن نسبت به ORMها باشد.
بنظر میرسد برای پاسخ به سوال اصلی این
مطلب، ناگزیر به مقایسه SP با رقبای دیرینهاش هستیم. با برشمردن معایب و
مزایای SP میتوان به نتیجهی منطقیتری رسید. البته باید در نظر داشت صرف
استفاده از SP به معنای بهرهمند شدن از مزایای آن و صرف استفاده نکردن از
آن هم بهرهمندی از رقبای آن نیست. چگونگی استفاده یک ابزار، مهمتر از خود
ابزار است.
اگرچه SP ها برای پردازش دادهها آنقدر هم که در وبلاگها
میخوانیم بد نیستند، اما سوء استفاده از آن، مشکلات عدیدهای را ایجاد
خواهد کرد. با توجه به روند تغییرات تکنولوژیهای دسترسی به دادهها و
معماریهای مدرن بنظر میرسد SP در بهترین حالت، ابزار مناسبی برای انجام
عملیات CRUD است و نه بیشتر؛ مگر در مواردی خاص که به تشخیص شما نیاز به
استفاده بیشتر از آن وجود داشته باشد.
برخی از قابلیت های رویه های ذخیره شده یا Stored Procedure ها عبارت است از: