پارامتربندی stored procedures
درس “پارامتربندی Stored Procedures” در SQL Server به شما آموزش میدهد چگونه با تعریف پارامترها در Stored Procedureها، انعطافپذیری و کارایی کوئریهای خود را افزایش دهید. در این درس، نحوه تعریف و استفاده از پارامترها، مدیریت خطاها، و ارسال مقادیر به Stored Procedureهای پارامتردار بررسی میشود. مزایای این روش شامل کاهش تکرار کد، افزایش امنیت از طریق جلوگیری از SQL Injection و بهبود کارایی سیستم است. این آموزش با مثالهای عملی به شما کمک میکند تا کاربردهای این قابلیت را در پروژههای واقعی درک کرده و به صورت حرفهای پیادهسازی کنید.
در این بخش من میخواهم کمی با stored procedures پیش بروم و درمورد برخی ازoption های دیگر و برخی از تکنیک های پیشرفته تر صحبت کنم.
در فایلهای تمرینی تان، دوباره من برخی از کدها رو برای شما طبقه بندی و آماده کردم.
شما میتوانید همه این کدها رو کپی و در یک query جدید پاست کنید و اجازه بدهید قبل از اینکه اون رو اجرا کنم، در موردش صحبت کنیم.
همانطور که می بینید دوباره ما یک کلمه کلیدی CREATE و یک کلمه کلیدی PROCEDURE داریم و اینبار اون رو sales person by sales نامگذاری کردم و هدفم اینجا این است که لیستی از افراد فروشنده بر اساس اینکه چه مقدار فروش داشتند، رو برگردانم. بنابراین این stored procedure یک پارامتر رو میپذیرند، پارامتری که دارای تعداد هست و این query تنها افراد فروشندهای رو برمیگرداند که بیشتر از اون تعداد و پارامتر مشخص شده فروش داشته باشند.
ما در خط دوم میبینیم که چطور پارامتر رو تعریف کردیم. پارامترها در store procedure ها همیشه با علامت @ شروع میشوند و سپس نام اون رو هر چی که میخواهید، میتوانید بگذارید. بنابراین من شاید الان دوست دارم اون پارامتر رو sales value نامگذاری کنم بعد از اون باید کلمه کلیدی as رو قرار بدهید و بعدش هم نوع دادهای که علاقه مند به نمایش آن هستید رو میگذارید. در اینجا نوع sales value رو int مخفف integer که عدد صحیح هست رو میگذاریم، بعد کلمه کلیدی as رو دوباره در خط 3 قرار میدهیم.
برای نمادین کردن شروع store procedure اینبار در خط 4 دستور BEGIN و در خط 12 دستور END رو قرار میدهیم. همیشه لازم نیست که stored procedure تان رو در داخل begin و end قرار بدهید، اما در بیشتر مواقع استفاده از این دستورات یک ایده خوب است.
در خط 5، منطق و شرط stored procedure در محدوده ای که ما قصد بررسی مقدارsales value رو، داریم، شروع میشود. هر بار که شما یک پارامتر ورودی رو میپذیرید، میخواهید از درستی و معتبر بودن مقدار اون مطمئن بشوید. تعداد زیادی نمونه از مقادیر عددی که برای تعین محدوده جواب رو در اینجا می توانید قرار بدهید رو، تست کنید و نتایجشون رو چک کنید. ولی اینجا برای اینکه ما بخواهیم نتیجه رو مشاهده کنیم کافی است که مقدار بزرگتر از صفر رو امتحان کنیم و میدانیم که حتماً افرادی که فروش دارند، در جدول مورد بررسی ما وجود دارد.
سپس اگر مقدار بزرگتر از 0 بود، خط 6 و 7 و 8 رو اجرا میکند که انتخاب برخی ستونها ازview v. sales person هست و من میخواهم این نتایج رو با استفاده از دستور where فیلتر کنم و این فیلتر کردن هم به اینصورت باشد که مقدارهای sales id بزرگتر یا مقدارهای sales id برابر با sales value تعریف شده رو در نهایت به ما نشان بدهد. بنابراین درون دستورselectمان ما میتوانیم از همه پارامترهایمان که تعریف شدند استفاده کنیم.
در پایین در خط 10 و 11 پارامترهای اعتبار سنجی ما هستند که اگر پارامتر تعریف شده ما در اینجا بزرگتر از 0 نباشد، برای ما کلمهای که خودمان با نام error رو برایش تعریف کردیم رو، برمیگرداند.
من پیش میروم واین رو اجرا میکنم.
پیام commands completed successfully رو میبینم.
این خوب است و من query جدیدی رو باز میکنم و در بخش store procedure درobject explorer کلیک راست میکنم و یک رفرش انجام میدهم، کاری که همیشه باید انجام بدهیم.
بعد از این رفرش Sales Person By Sales رو میبینم.
این خوب است و اجازه بدهید stored procedure رو اجرا کنم و باید برای اون یک مقدار تعریف کنم.
من میتوانم یک مقداری رو بعد از نام اون تایپ کنم و میخواهم با 3 میلیون پیش بروم و اون رو اجرا میکنم.
و ما میبینیم که 5 سطر رو برمیگرداند.
الان همه افرادی نمایان میشوند که مقدار فروشهای سال آنها تا به امروز بزرگتر از 3 میلیون هست، که این مقداری بود که الان ما مشخص کردیم. بنابراین همینطور که نتایج رو داریم مشاهده می کنیم می بینیم که نتایج مناسب و درستی برای ما بدست آمدند. ما یک store procedure ایجاد کردیم که یک پارامتر رو تعریف کرد و ما بر اساس اون پارامتر یک مجموعه نتایج گرفتیم.