PDA

View Full Version : سوال: خطا در ساخت Inline Function



MJ_PC88
یک شنبه 02 اسفند 1388, 09:22 صبح
سلام دوستان
میخواستم ببینم کد زیر چه ایرادی داره که دائم به من خطای If میده؟
Create FUNCTION [dbo].[CheckSiance](@Id int)
RETURNS TABLE
AS
RETURN

if @Id=0
select Id from Salon where siance1=0
else if @Id=1
select Id from Salon where siance2=0
else if @Id=2
select Id from Salon where siance3=0

AminSobati
یک شنبه 02 اسفند 1388, 11:31 صبح
سلام دوست عزیزم،
در توابع Inline باید Query بنویسید و استفاده از If و امثالهم جایز نیست. حدس میزنم چیزی شبیه به این بعد از Return مد نظر شماست:



select Id from Salon
where 1=
case @id
when 1 then case when siance1=0 then 1 else 0 end
when 2 then case when siance2=0 then 1 else 0 end
when 3 then case when siance3=0 then 1 else 0 end
end

MJ_PC88
یک شنبه 02 اسفند 1388, 13:05 عصر
خوشبختانه تونستم مشکلم رو با استفاده از توابع Multi Statement به جای Inline Function حل کنم،اگه کسی خواست میتونم کدش رو براش بفرستم

AminSobati
یک شنبه 02 اسفند 1388, 15:40 عصر
تا جاییکه امکان داره از Multi Statement استفاده نکنید به خاطر IO اضافی و عدم دسترسی Query Processor به فرایندهای داخلی برای بهینه کردن. مطمئن بشین که راه بهتری وجود نداره بعد سراغ Multi Statement برین

MJ_PC88
چهارشنبه 05 اسفند 1388, 11:47 صبح
تا جاییکه امکان داره از Multi Statement استفاده نکنید به خاطر IO اضافی و عدم دسترسی Query Processor به فرایندهای داخلی برای بهینه کردن. مطمئن بشین که راه بهتری وجود نداره بعد سراغ Multi Statement برین

من راههای دیگه رو امتحان کردم،از اونجایی که این بخش فقط واسه جستجوی پیشرفته سایت استفاده میشه و حجم کدنویسی و فراخوانی ها رو بسیار کم میکنه،من فعلا اینو بهترین روش میدونم

AminSobati
پنج شنبه 06 اسفند 1388, 10:10 صبح
معمولا چون در مرحله Develop تست با حجم کم اطلاعات انجام میشه، همه چیز خوبه! ولی ممکنه مشتری بعد از مدتی گلایه هاش شروع بشه! اگر واقعا هیچ راهی نیست، پس به ناچار از Multi Statement استفاده کنین