ورود

View Full Version : شرط دز کوئری (بررسی پر یا خالی بودن متغیر در SP)



mehdi0020
دوشنبه 08 مرداد 1397, 14:39 عصر
سلام روز بخیر
دوستان میخواهم در بدنه where از یه شرط استفاده کنم
در واقع یک متغیر از طرف برنامه C# به sp پاس داده می شود میخواهم در بدنه where در صورتیکه متغیر مقدار نداشته باشد یک سری شرط در انجام نشود
and tb3123.ACREF_COD_REFAREA_ACREF in
(select distinct(ACREF_COD_REFAREA_ACREF) from [STOPDB.MDF].dbo.groupworks where office=@office)

میخواهم اگر متغیر @office مغدار ندارد این خط اجرا نشود
این دستور در sql چگونه می باشد؟؟؟


if (@office is not null)
{
tb3123.ACREF_COD_REFAREA_ACREF in
(select distinct(ACREF_COD_REFAREA_ACREF) from [STOPDB.MDF].dbo.groupworks where office=@office)
}

mehdi0020
سه شنبه 09 مرداد 1397, 07:13 صبح
???????????????

mehdi0020
چهارشنبه 10 مرداد 1397, 12:00 عصر
گسی نمیتونه کمک کنه؟ اصلا همچین چیزی امکان داره؟
دوستان کارم گیره لطفا راهنمایی کنید

Davidd
چهارشنبه 10 مرداد 1397, 18:03 عصر
سلام. چندتا راه داره. اول توی C# بر اساس مقدار متغیر @office کوئری مناسب تولید بشه و به sql ارسال بشه. راه دوم ساخت کوئری به صورت داینامیک در sp و اجرای آن
راه سوم اصلاح شرط به این صورت :
and (@office is null OR (@office is not null AND tb3123.ACREF_COD_REFAREA_ACREF in (select distinct(ACREF_COD_REFAREA_ACREF) from [STOPDB.MDF].dbo.groupworks where office=@office)))

mehdi0020
شنبه 13 مرداد 1397, 09:21 صبح
سلام. چندتا راه داره. اول توی C#‎ بر اساس مقدار متغیر @office کوئری مناسب تولید بشه و به sql ارسال بشه. راه دوم ساخت کوئری به صورت داینامیک در sp و اجرای آن
راه سوم اصلاح شرط به این صورت :
and (@office is null OR (@office is not null AND tb3123.ACREF_COD_REFAREA_ACREF in (select distinct(ACREF_COD_REFAREA_ACREF) from [STOPDB.MDF].dbo.groupworks where office=@office)))





ممنون از زاهنماییتون با روش سوم به جواب رسیدم
اما خیلی دوس دارم روش اول و دوم هم یاد بگیرم
باز از راهنمایی خیلی خوبتون سپاسگذارم