2010-12-04 54 views

回答

3

你正在得到的错误是你的选择正在更新变量,同时吐出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 
0

变化

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) 

当你给变量从选择分配值,在选择列表中的所有项目必须是赋值给变量。不仅仅是其中的一些。

0

错误消息非常明显 - 您无法在同一查询中组合变量赋值和正常结果集检索。

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 

拆分查询,一切都应该没问题。