ورود

View Full Version : سوال: خطا در کوئری



z.nasiri
جمعه 18 مرداد 1387, 23:22 عصر
سلام
من این کد ها را وارد میکنم و خطا هایی که نوشتم را می گیره البته با این خطا ها من result دارم . من این خطا ها را در مورد همه ی procedure , select که به این شکل هستند دارم:گریه:




create procedure happeninge




@eventmonth smallint = 0

,@eventday smallint = 0
,@happening nchar(20) output
as
select @happening=(select happening
from dbo.evente
where eventmonth=@eventmonth
and
eventday=@eventday)
return @happening
go
declare @happening_output nchar(20)
execute happeninge
3,2
select @happening_output as eventhappening


Msg 201, Level 16, State 4, Procedure happeninge, Line 0
Procedure or Function 'happeninge' expects parameter '@happening', which was not supplied.







select ImageData from dbo.imagee
where ImageId=(
select cardid from dbo.card
where flagid =
(select flagid from dbo.flag
where flagquantity ='famous' ))



Msg 512, Level 16, State 1, Line 2
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression


.فرموده بودن که کد جا به جا شده اما جابجایی صورت نگرفته

رضا جاسبی
جمعه 18 مرداد 1387, 23:46 عصر
در مورد Stored Procedure به شما میگه که انتظار پارامتری به نام happening@ را دارد در حالی که شما در هنگام فراخوانی SP پارامتری مشخص نکردید. البته باز هم من مطمئن نیستم جواب درست بهت بده چرا که نتیجه Select شما در حالت کلی "یک مقدار" نیست و مدل یک جدوله (یک ستونی).
موردی که در بالا عرض کردم در قسمت دوم برخورد کردیم : میگه نتیجه Select شما بیشتر از "یک مقدار" دارد بنابراین عملگر مساوی نمی تواند استفاده شود. شما در این حالت می توانید بجای = از in استفاده کنید. البته منطق کوئری رو باید به دقت در نظر بگیرید.

nedata
شنبه 19 مرداد 1387, 00:23 صبح
سلام
شما دستور exe را به اینصورت بنویس درست می شه
execute happeninge 3,2,@happening_output

در مورد دستور دوم هم یکی از Select های 2 یا 3 شما بیش از یک مقدار برمی گرداند

KambizZandi
شنبه 19 مرداد 1387, 00:31 صبح
مشخص نکرديد client شما چيه؟
ولي در هر حال شما بايد تمام پارامترهايي رو که براي SP مشخص کرديد (به غير از اونايي که براشون تو SP مقدار default گذاشته باشيد) رو بايد AddParameter کنيد
حالا يا InputParameter يا OutputParameter و يا InOutParameter

در مورد دومي هم بهتره از Inner Join استفاده کنيد تا جواب بده.

war1351
شنبه 19 مرداد 1387, 04:14 صبح
آقا / خانم نصیری عزیز بعلت چپ و راست شدن نوشته هایت قابل درک درست نیست اگه میتونی SP رو بصورت یه فایل قابل دانلود. آپلود کن سریع بهت جواب میدم