2013-07-19 38 views
0

當我運行下面的存儲過程時,得到:如何解決'Procedure或function addQuestion指定的參數太多'。錯誤?

`過程或函數addQuestion指定的參數太多。

我相信原因是因爲@qnum在INSERT語句中,但未在存儲過程的聲明部分聲明爲參數。

這裏是下面的存儲過程:

CREATE PROCEDURE [dbo].[addQuestion](@surveyID INT, @question VARCHAR(255), @AnswerType CHAR(1), @CorrectAnswer NVARCHAR(50)) 
AS 
DECLARE @qnum INT 

SELECT @qnum = ISNULL(MIN(QuestionOrder),0)+1 
FROM SurveyQuestions WHERE SurveyID = @surveyID 

INSERT INTO SurveyQuestions(SurveyID, Question, AnswerType,CorrectAnswer,QuestionOrder) 
VALUES (@SurveyID, @Question, @AnswerType,@CorrectAnswer,@qnum) 

我該如何解決這個問題?

我認爲關鍵要固定它做第一固定位:

DECLARE @qnum INT 

SELECT @qnum = ISNULL(MIN(QuestionOrder),0)+1 
FROM SurveyQuestions WHERE SurveyID = @surveyID 

感謝很多提前

+4

你可以發佈你的調用執行這個過程嗎?你幾乎肯定會將太多的參數傳遞給它。 –

+0

@AdrianWragg,它正在工作。我在應用中傳遞了太多爭論。 如果你可以把你的解決方案放在我信任你的地方,那會很好。 謝謝 –

回答

1

此錯誤僅表示您在調用存儲過程時傳遞的參數太多。

仔細檢查您的電話,然後重試。

0

你可能會得到paramters的清單,這個腳本:

SELECT * 
FROM sys.parameters p 
WHERE p.object_id=OBJECT_ID(N'[dbo].[addQuestion]'); 

參考文獻:Books Online sys.parameters

包含接受 參數的對象的每個參數的一行。如果對象是標量函數,那麼還有一行描述返回值的行。該行的parameter_id 值爲0.

+1

謝謝@Adrian和Bogdan, 我正在處理一個不同的問題,阻止我回復您的帖子。 我會盡快與您聯繫。 謝謝你的好意。 –