存储过程中指定的参数太多
问题:
执行存储过程时调用另一个存储过程时,您可能会遇到错误消息“过程或函数有太多参数 指定的。”此错误表示传递给被调用过程的参数数量与它声明接受的参数数量不匹配。
标识:
识别错误参数,检查被调用过程的定义中声明的参数。将这些参数与从调用过程传递的参数进行比较。不匹配将识别多余参数的位置。
提供的代码分析:
在给定的代码片段中,发生错误是因为您正在调用存储过程 [ etl_M_Update_Promo] 有两个参数:
EXEC etl.etl_M_Update_Promo @GenID, @Description
但是, [etl_M_Update_Promo] 只声明一个参数:
ALTER PROCEDURE [etl].[etl_M_Update_Promo] @GenId bigint = 0
因此,SQL Server 会抛出错误消息,表明被调用的过程需要一个参数,而传递的是两个参数。
解决方案:
要解决此问题,请对齐传递给被调用过程的参数数量与它期望的数字。在这种情况下,您有两个选择:
删除多余的参数:
修改 [dbo].[M_UPDATES] 中的代码以删除第二个参数:
EXEC etl.etl_M_Update_Promo @GenID
添加缺少的参数:
更改 [etl_M_Update_Promo] 的定义以包含第二个参数:
ALTER PROCEDURE [etl].[etl_M_Update_Promo] @GenId bigint = 0, @Description NVARCHAR(50) AS .... Rest of the code.
以上是为什么我的存储过程出现'指定的参数过多”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!