PDA

View Full Version : مشکل در stored procedure



hamid1
یک شنبه 18 اسفند 1387, 13:02 عصر
سلام
من می خواهم سرچ ترکیبی انجام دهم در داخل فرم 8 کادر متنی دارم که هر کدام مقدار یک فیلدی را برای جستجو می گیرند مثلا یکی مقدار فیلد کد و دیگری مقدار فیلد نام و ... . ممکن است کاربر در بعضی از آنها مقداری را وارد کند و در بعضی نکند به همین دلیل من باید چک کنم که هر کدام که خالی است در شرط جستجوی من در نظر گرفته نشود . اگر بخواهم تمام حالات را چک کنم به دلیل وجود کلمه and در بین شرطها باید 2 به توان 8 حالت چک شود و برای هر کدام دستور select مربوطه نوشته شود . من به دلیل داشتن شرطهای زیاد می خواهم در stored procedure ابتدا قسمت where را با استفاده از پارامترهایی که به آن می دهم به صورت string ایجاد کنم و سپس از آن در دستور select استفاده کنم . این کار را کردم ولی از قسمت where @c خطا می گیرد . @c همان متغییری است که شرط where داخل آن است . اگر این کار را در قسمت کد نویسی برنامه انجام دهم و سپس از آن استفاده کنم امکان پذیر است ولی من می خواهم ار stored procedure استفاده کنم .
خواهش می کنم جواب من را بدهید مسئله خیلی حیاتی است .

majid325
چهارشنبه 21 اسفند 1387, 13:11 عصر
این طور که معلومه شما میخواین dynamic Search انجام بدین , لینک زیر نگاهتو نسبت بهdynamic Search در t-sql روشن تر میکنه:
http://www.developerfusion.com/article/7305/dynamic-search-conditions-in-tsql/2/

masoud.ramezani
چهارشنبه 21 اسفند 1387, 15:29 عصر
سلام دوست عزيز

براي انجام اينکار حتما بايد آن را توسط exec آنرا اجرا کنيد. به عنوان مثال من يک sp که در آن تمامي جستجو از طريق پارامترها انجام ميشود و من پارامترها را ميسازم، دستکاري ميکنم و در نهايت اجرا ميکنم. به اين کد دقت کنيد :


EXEC(
'
DECLARE @SortColumn ' + @type + '
SET ROWCOUNT ' + @strStartRow + '
SELECT @SortColumn=' + @strSortColumn + ' FROM ' + @Tables + @strFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
SET ROWCOUNT ' + @strPageSize + '
SELECT ' + @Fields + ' FROM ' + @Tables + ' WHERE ' + @strSortColumn + @operator + ' @SortColumn ' + @strSimpleFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
'
)


فقط دقت کنيد که اين انتهاي کد من است و بالاتر از آن من در حال مقداردهي برخي از پارامترها بوده ام.

hamid1
پنج شنبه 22 اسفند 1387, 21:11 عصر
از دوستانی که راهنمایی کردند تشکر می کنم . دقیقا همان چیزی بود که من می خواستم و مشکلم حل شد . امیدوارم که همیشه این دوستان موفق باشند .