پارامتر ورودی Store Procedure ، وقتی مقداری بین یک تا چند رشته باشد
دوستان سلام.
برای برنامه ای، در یکی از spهایی مورد نیاز، باید یک پارامتر ورودی تعریف کنم که مقدار اون در دستور IN به این صورت قرار بگیره:
SELECT ID, F1, F2, F3 FROM tbl WHERE ID IN @ID
فیلد ID از نوع VARCHAR هست و مقدار اون مثلا میتونه به این شکل باشه:
('CCC')
یا
('AAA', 'BBB', 'DDD')
در واقع اینطور فرض کنید که باید یک sp که شامل یک select هست نوشته بشه. شرط Select هم برای یکی از فیلدهای رشته ای، توسط کاربر مثلا می تونه ('aaa') یا ('bbb', 'aaa') یا ... باشه. (یعنی کاربر می تونه یک یا چند گزینه دلخواه رو انتخاب کنه. پس بهترین حالت اینه که در کامند IN چک بشه). با توجه به این حالت ها، من به چه صورت می تونم این sp رو تعریف کنم؟
نقل قول: پارامتر ورودی Store Procedure ، وقتی مقداری بین یک تا چند رشته باشد
سلام. یکی از این روش ها:
Exec string
Temp table
XML
Split String
برای مورد شما من روش Split String رو پیشنهاد می کنم
پارامتر رو می دین داخل یک تابع که اون رو Explode می کنه تو یه تیبل، بعد روش جوین می زنید.
نقل قول: پارامتر ورودی Store Procedure ، وقتی مقداری بین یک تا چند رشته باشد
آقا یوسف ممنون از راهنمایی.
نکات خیلی خیلی جالبی بود. ذهن من برای خیلی کارها در آینده باز شد.
اما در رابطه با پیشنهاد شما، با توجه به اینکه تعداد آیتم ها نامشخصه، به نظرم استفاده از Split String یه کم سخت باشه. چون مثلا در همون مثال بالا ممکنه کاربر 1، 2، 3 یا هر تعدادی که مد نطرش هست رو در یک CheckListBox انتخاب کنه. ولی من از قبل نمی دونم تعدادش چند تاس تا بتونم split کنم.
نقل قول: پارامتر ورودی Store Procedure ، وقتی مقداری بین یک تا چند رشته باشد
برای اسپلیت کردن دستور وجود داره و نیاز نیست تعداد رو بدونید.
https://www.sqlservertutorial.net/sq...0or%20CHAR%20.
نقل قول: پارامتر ورودی Store Procedure ، وقتی مقداری بین یک تا چند رشته باشد
بله درسته. حق با شماست. من بعد از ارسال پست قبلی، متوجه شدم دارم به اشتباه دستور SubString_Index(Str, Delim, Count) رو بررسی می کنم.