首页 >数据库 >mysql教程 >为什么我的存储过程调用失败并显示'指定的参数过多”?

为什么我的存储过程调用失败并显示'指定的参数过多”?

Linda Hamilton
Linda Hamilton原创
2024-12-27 08:06:09370浏览

Why Does My Stored Procedure Call Fail with

存储过程调用中的参数过多

错误消息“Procedure or function xxx Too mucharguments specified”表示参数之间的数量不匹配存储过程调用中指定的参数数量以及存储过程定义中声明的参数数量。

在这种特殊情况下,您正在调用存储过程“[dbo].[M_UPDATES]”,该过程又调用另一个存储过程“[etl_M_Update_Promo]”。发生错误的原因是“[etl_M_Update_Promo]”被声明为仅接受一个参数@GenId,但您在“[dbo].[M_UPDATES]”的调用中向其传递了两个参数(@GenID 和 @Description)。

识别不匹配的参数

要识别确切的不匹配,请检查存储过程“[etl_M_Update_Promo]”的声明:

ALTER PROCEDURE [etl].[etl_M_Update_Promo]
@GenId bigint = 0
as

此声明指定该过程采用一个参数 @GenId,它是一种 bigint 数据类型,默认值为 0。在您的调用中从“[dbo].[M_UPDATES]”,您传递了两个参数,但第二个参数(@Description)未在过程定义中声明,因此导致错误。

调整参数列表

要解决该错误,您需要修改“[etl_M_Update_Promo]”的声明以包含第二个参数:

ALTER PROCEDURE [etl].[etl_M_Update_Promo]
@GenId bigint = 0,
@Description NVARCHAR(50)
AS 

.... Rest of your code.

通过在过程声明中指定@Description作为附加参数,现在可以在调用时合法地传递它来自“[dbo].[M_UPDATES]”的“[etl_M_Update_Promo]”。

以上是为什么我的存储过程调用失败并显示'指定的参数过多”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn