ورود

View Full Version : برگشت یک نتیجه از sp وقتی دو تا سلکت داریم



احمد سامعی
چهارشنبه 19 مرداد 1390, 14:53 عصر
سلام
من توی یک sp از یک جدول یک select دارم گاهی اوقات نتیجه ای با توجه به بخش where دستور بازگشت داده نمی شه در نتیجه در sp که نوشتم بررسی می کنم اگر تعداد row بازگشتی صفر بود یک select دیگه انجام می دم که حتما نتیجه برگشت داده می شه
اما مشکل اینکه بعد از برگشت از sp در برنامه هرکدام از این دستورات نتایجش در یک جدول بازگشت داده می شه و من فقط به جدول اولی دسترسی دارم یعنی اگر سلکت اولی نتیجه داشته که خوب ما هم نتیجه رو می تونیم دریافت کنیم اگر اولی خالی باشه به دومی دسترسی ندارم چطوری می تونم وقتی وارد شرط در سلکت دوم شدم نتیجه سلکت اولی از بین ببرم در خود sp


برنامه ام با #C و این هم نمونه کدها


SP:

select * from tb1 where ID = @Id
IF(@@rowcount =0)
begin
select * from tb2 where ID = @Id
end




#C:
SQLDataReader reader = comand.ExecuteReader();
if(reader.Read())
{
name = reader.GetString(0);
}

وقتی شرط در sp برقرار می شه و از dataset به جای sqldatareader استفاده می کنم دو تا جدول از sp در دیتاست ایجاد می شه

یوسف زالی
چهارشنبه 19 مرداد 1390, 16:15 عصر
سلام.
در SP همیشه اولین select شما به عنوان خروجی در دیتاست خواهد نشست.
برای این کار از جدول موقت استفاده کنید و در شرایط خودتون در اون insert انجام بدید یا از اون delete کنید.
در آخر هم فقط اون رو select کنید.

Reza_Yarahmadi
چهارشنبه 19 مرداد 1390, 17:04 عصر
راه حل های متفاوتی برای این کار وجود داره.
در صورتی که روی فیلد ID ایندکس مناسب گذاشته باشید میتونید از روش زیر هم استفاده کنید
IF EXISTS(select 1 from tb1 where ID = @Id)
select * from tb1 where ID = @Id
ELSE
select * from tb2 where ID = @Id