Possible Duplicate:
need help with some stored procedure plz需要一些存储过程的错误帮助
ERROR: - 一个值赋给变量不能与数据检索操作结合
的SELECT语句。
Possible Duplicate:
need help with some stored procedure plz需要一些存储过程的错误帮助
ERROR: - 一个值赋给变量不能与数据检索操作结合
的SELECT语句。
你正在得到的错误是你的选择正在更新变量,同时吐出resutls。 分手了您的疑问如下:
ALTER PROC [Admin].[sp_Ques]
(
@QuesID bigint
)
AS
BEGIN
DECLARE @Lang int -- ERROR HERE
IF @QuesID = 0
SET @QuesID =NULL
SELECT TOP 1 @Lang=FQ.AdminLanguageID
FROM Admin.Ques FQ
LEFT OUTER JOIN Admin.QuesTypes FQT ON FQT.QuesTypeID=FQ.QuesTypeID
WHERE FQ.QuesID = Coalesce(@QuesID,QuesID)
SELECT TOP 1 FQ.QuesID, FQ.Ques,QuesAns as QuesAns,FQ.QuesAns[Answers], FQT.QuesType ,FQ.QuesTypeID, FQ.QuesParentID, FQ.Active,FQ.AdminLanguageID
FROM Admin.Ques FQ
LEFT OUTER JOIN Admin.QuesTypes FQT ON FQT.QuesTypeID=FQ.QuesTypeID
WHERE FQ.QuesID = Coalesce(@QuesID,QuesID)
SELECT TelerikLanguage FROM Admin.Language
WHERE [email protected]
END
变化
SELECT TOP 1 FQ.QuesID, FQ.Ques,QuesAns as QuesAns,FQ.QuesAns[Answers], FQT.QuesType ,FQ.QuesTypeID, FQ.QuesParentID, FQ.Active,FQ.AdminLanguageID,@Lang=FQ.AdminLanguageID
FROM Admin.Ques FQ
LEFT OUTER JOIN Admin.QuesTypes FQT ON FQT.QuesTypeID=FQ.QuesTypeID
WHERE FQ.QuesID = Coalesce(@QuesID,QuesID)
要
SELECT TOP 1 @Lang=FQ.AdminLanguageID
FROM Admin.Ques FQ
LEFT OUTER JOIN Admin.QuesTypes FQT ON FQT.QuesTypeID=FQ.QuesTypeID
WHERE FQ.QuesID = Coalesce(@QuesID,QuesID)
当你给变量从选择分配值,在选择列表中的所有项目必须是赋值给变量。不仅仅是其中的一些。
错误消息非常明显 - 您无法在同一查询中组合变量赋值和正常结果集检索。
SELECT TOP 1 FQ.QuesID,
FQ.Ques,
QuesAns as QuesAns,
FQ.QuesAns[Answers],
FQT.QuesType ,
FQ.QuesTypeID,
FQ.QuesParentID,
FQ.Active,
FQ.AdminLanguageID,
@Lang=FQ.AdminLanguageID <---- this is the problem
拆分查询,一切都应该没问题。