2010-12-04 87 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 

拆分查詢,一切都應該沒問題。