首頁 >資料庫 >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