ورود

View Full Version : case



ali643
پنج شنبه 12 مرداد 1385, 13:22 عصر
سلام دوستان

یک sp می خوام بنویسم که اطلاعات خاصی رو از یه جدول بکشه بیرون و برام نمایش بده حالا اطلاعات من جوری هست که در هر فرم برنامه باید متفاوت باشه
مثل در یه فرم برنامه نیازه که کد و نام و نام خانوادگی از جدول بازیابی بشه و در یه فرم دیگه باید کد و نام و نام خانوادگی و ایمیل و آدرس و در یه فرم دیگه یه سری اطلاعات دیگه به این نتیجه رسیدم که توسط یه پارامتر یه عددی رو یه SP پاس بدم و بعدش در SP از یه Case استفاده کنم که مثلا اگر پارامتر برابر 1 بود یه سری اطلاعات بازیابی بشه و اگر برابر 2 بود یه سری دیگه و همینطور تا n ادامه داشته باشه
حالا تو ساختار case موندم که چطوری بنویسم تو bookonline هم سرچ کردم چیزی دستم نیومد

مرسی

majid_afra222
پنج شنبه 12 مرداد 1385, 14:30 عصر
سلام
یه متغیر برای پرس و جوی اصلی تعریف کن، اون متغیر رو با دستور زیر مقدار دهی کن :



declare @strSel nvarchar(4000)
select @strSel = case @id
when 1 then N'select col1, col2 from tbl'
when 2 then N'select col3, col4 from tbl'
when 3 then N'select col1, col3, col2 from tbl'
end

بعد اجراش کن :


exec(@strSel)

AminSobati
پنج شنبه 12 مرداد 1385, 14:32 عصر
دوست عزیزم،
صورت مسئله ای که شما مطرح کردین تصور میکنم به Case نیازی نداشته باشه. احتمالا داشتن چند SP برای مقاصد مختلف پاسخ شماست. شاید این به نظر برسه که یک SP داشته باشیم اما داخلش IF بکار ببریم تا اگر مثلا مقدار 1 پاس شد، فلان Query رو انجام بده، اگر 2 بود Query دیگه و الی آخر...
اما توصیه من اینه که در این حالت، SPها رو جدا کنید تا Compiler بهتر بتونه Optimize کنه Queryها رو.