【问题标题】:How do I resolve the `Procedure or function addQuestion has too many arguments specified.' error?如何解决“过程或函数 addQuestion 指定的参数过多。”错误?
【发布时间】:2013-07-19 12:37:02
【问题描述】:

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

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

非常感谢

【问题讨论】:

  • 您可以发布执行此过程的调用吗?您几乎可以肯定向它传递了太多参数。
  • @AdrianWragg,它正在工作。我在应用程序中传递了太多参数。如果你能把你的解决方案放在我相信你的地方,那就太好了。谢谢

标签: sql-server sql-server-2005 sql-server-2008-r2


【解决方案1】:

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

仔细检查您的通话,然后重试。

【讨论】:

    【解决方案2】:

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

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

    参考:Books Online 系统参数

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

    【讨论】:

    • 谢谢@Adrian 和 Bogdan,我正在处理一个不同的问题,导致我无法回复您的帖子。我会尽快和你一起回来。谢谢你的好意。
    猜你喜欢
    • 2017-05-25
    • 1970-01-01
    • 2023-03-26
    • 2014-02-08
    相关资源
    最近更新 更多