در دنیای پایگاهدادهها، بهویژه در SQL، روشهای مختلفی برای مدیریت دادهها و افزایش سرعت اجرای کوئریها وجود دارد. یکی از مهمترین این روشها Stored Procedure یا همان رویه ذخیرهشده است. Stored Procedure در SQL در واقع مجموعهای از دستورات است که یک بار در پایگاهداده ذخیره میشود و هر بار که نیاز باشد میتوان آن را فراخوانی کرد. این قابلیت باعث افزایش سرعت، کاهش پیچیدگی و مدیریت بهتر کدهای SQL میشود. در این مقاله بهصورت کامل Stored Procedure را بررسی میکنیم، مزایا و کاربردهای آن را توضیح میدهیم و در نهایت با مثالهای واقعی نشان میدهیم که چطور میتوان از آن استفاده کرد.
Stored Procedure در SQL چیست؟
Stored Procedure یک برنامه کوچک یا مجموعهای از دستورات SQL است که روی سرور پایگاهداده ذخیره میشود. بهجای اینکه هر بار دستورات پیچیده SQL را بنویسیم، میتوانیم آنها را در قالب یک رویه ذخیره کنیم و تنها با یک دستور ساده آن را اجرا نماییم. این موضوع باعث میشود حجم کدنویسی در سمت برنامهنویس کاهش یابد و اجرای کوئریها سریعتر انجام شود.
برای مثال، فرض کنید هر بار برای گرفتن اطلاعات کاربر باید چندین دستور SELECT و JOIN اجرا کنید. بهجای نوشتن مکرر این دستورات، میتوانید یک Stored Procedure بسازید و تنها با صدا زدن آن، نتیجه را دریافت کنید.
مزایای Stored Procedure در SQL
Stored Procedure در SQL مزایای فراوانی دارد که در ادامه برخی از مهمترین آنها را بررسی میکنیم:
-
افزایش سرعت اجرا
چون Stored Procedure یک بار کامپایل میشود و در حافظه سرور ذخیره میشود، اجرای آن در دفعات بعدی سریعتر خواهد بود. -
کاهش حجم کد
بهجای نوشتن چندباره دستورات SQL، میتوان تنها یک Stored Procedure نوشت و در قسمتهای مختلف برنامه آن را استفاده کرد. -
امنیت بیشتر
Stored Procedure میتواند از SQL Injection جلوگیری کند، زیرا بهجای اجرای مستقیم کوئریها، تنها پارامترها به رویه ارسال میشود. -
مدیریت بهتر
وقتی نیاز به تغییر در منطق کوئریها باشد، تنها کافی است Stored Procedure ویرایش شود و نیازی به تغییر در همه بخشهای برنامه نیست. -
قابلیت استفاده مجدد
یک Stored Procedure را میتوان در بخشهای مختلف برنامه و حتی توسط کاربران گوناگون استفاده کرد.

ساخت Stored Procedure در SQL
ساخت یک Stored Procedure در SQL بسیار ساده است. ساختار کلی آن به شکل زیر است:
مثال ساده:
در این مثال، یک Stored Procedure به نام GetAllEmployees
ساختهایم که تمام اطلاعات جدول Employees
را برمیگرداند.
اجرای Stored Procedure در SQL
برای اجرای یک Stored Procedure از دستور EXEC
یا EXECUTE
استفاده میکنیم:
با اجرای این دستور، تمامی رکوردهای جدول Employees
نمایش داده میشود.
استفاده از پارامترها در Stored Procedure
یکی از مهمترین قابلیتهای Stored Procedure استفاده از پارامترهاست. بهاینترتیب میتوانیم یک رویه عمومی بسازیم که بسته به ورودی کاربر، خروجی متفاوتی بدهد.
مثال:
اجرای این Stored Procedure با پارامتر:
در اینجا فقط اطلاعات کارمندی که EmployeeID
آن برابر 3 است برگردانده میشود.
Stored Procedure با چندین پارامتر
گاهی نیاز داریم چندین شرط مختلف روی دادهها اعمال کنیم. در این مواقع میتوانیم از چند پارامتر استفاده کنیم.
مثال:
اجرای رویه:
این Stored Procedure تمامی کارمندان بخش IT با حقوق بالاتر از 5000 را نمایش میدهد.
تغییر Stored Procedure
اگر بخواهیم محتوای یک Stored Procedure را تغییر دهیم، میتوانیم از دستور ALTER
استفاده کنیم.
در اینجا رویه GetAllEmployees
تغییر داده شد تا فقط ستونهای خاصی را برگرداند.
حذف Stored Procedure
برای حذف یک Stored Procedure کافی است از دستور DROP PROCEDURE
استفاده کنیم:
نکات مهم درباره Stored Procedure
-
بهتر است نام Stored Procedureها معنادار و گویا انتخاب شود.
-
هنگام استفاده از پارامترها، نوع داده باید دقیقاً با نوع ستون جدول مطابقت داشته باشد.
-
میتوان داخل Stored Procedure از دستورات شرطی مثل
IF
وCASE
و حتی حلقهها استفاده کرد. -
از آنجا که Stored Procedure روی سرور اجرا میشود، بار پردازشی روی کلاینت کاهش مییابد.

مثال پیشرفته: Stored Procedure با شرط و حلقه
برای نشان دادن قدرت Stored Procedure مثالی پیشرفته میزنیم:
اجرای رویه:
این رویه حقوق همه کارمندان بخش HR را 10 درصد افزایش داده و سپس لیست آنها را نمایش میدهد.
جمعبندی
Stored Procedure در SQL یکی از پرکاربردترین ابزارها برای مدیریت بهتر کوئریها و بهینهسازی پایگاهداده است. با استفاده از Stored Procedure میتوان سرعت اجرا را افزایش داد، امنیت را بالا برد و کدنویسی را سادهتر کرد. در این مقاله با تعریف Stored Procedure، مزایا، نحوه ساخت، استفاده از پارامترها، تغییر و حذف آن آشنا شدیم و مثالهای کاربردی را بررسی کردیم. اگر در پروژههای واقعی با پایگاهداده کار میکنید، یادگیری و استفاده از Stored Procedure میتواند بخش بزرگی از کار شما را ساده و بهینه کند.
بدون دیدگاه