0

当我运行以下存储过程时,我得到:

`过程或函数 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

2 回答 2

1

此错误仅表明您在调用存储过程时传递了太多参数。

仔细检查您的呼叫,然后重试。

于 2013-07-19T17:47:20.513 回答
0

您可以使用此脚本获取参数列表:

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

参考文献:在线图书 sys.parameters

包含接受参数的对象的每个参数的行。如果对象是标量函数,则还有一行描述返回值。该行的 parameter_id 值为 0。

于 2013-07-19T13:13:33.457 回答