Heim >Datenbank >MySQL-Tutorial >Warum schlägt mein Aufruf einer gespeicherten Prozedur mit „Zu viele Argumente angegeben' fehl?

Warum schlägt mein Aufruf einer gespeicherten Prozedur mit „Zu viele Argumente angegeben' fehl?

Linda Hamilton
Linda HamiltonOriginal
2024-12-27 08:06:09372Durchsuche

Why Does My Stored Procedure Call Fail with

Zu viele Parameter im Stored Procedure Call

Die Fehlermeldung „Prozedur oder Funktion xxx zu viele Argumente angegeben“ weist auf eine Nichtübereinstimmung zwischen der Zahl hin der in einem Aufruf einer gespeicherten Prozedur angegebenen Parameter und die Anzahl der in der Definition der gespeicherten Prozedur deklarierten Parameter.

In diesem speziellen Fall rufen Sie die gespeicherte Prozedur auf „[dbo].[M_UPDATES]“, was wiederum eine andere gespeicherte Prozedur „[etl_M_Update_Promo]“ aufruft. Der Fehler tritt auf, weil „[etl_M_Update_Promo]“ so deklariert ist, dass es nur einen Parameter @GenId akzeptiert, Sie ihm jedoch zwei Parameter (@GenID und @Description) im Aufruf von „[dbo].[M_UPDATES]“ übergeben.

Identifizieren der nicht übereinstimmenden Parameter

Um die genaue Nichtübereinstimmung zu identifizieren, überprüfen Sie die Deklaration der gespeicherten Prozedur „[etl_M_Update_Promo]“:

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

Diese Deklaration gibt an, dass die Prozedur einen Parameter, @GenId, annimmt, der ein Bigint-Datentyp ist und den Standardwert 0 hat. In Ihrem Aufruf von „[dbo] .[M_UPDATES]“, Sie übergeben zwei Parameter, aber der zweite Parameter (@Description) ist nicht in der Prozedurdefinition deklariert und verursacht daher das Fehler.

Anpassen der Parameterliste

Um den Fehler zu beheben, müssen Sie die Deklaration von „[etl_M_Update_Promo]“ ändern, um den zweiten Parameter einzuschließen:

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

.... Rest of your code.

Durch die Angabe von @Description als zusätzlichen Parameter in der Prozedurdeklaration können Sie es nun beim Aufruf legal übergeben „[etl_M_Update_Promo]“ von „[dbo].[M_UPDATES]“.

Das obige ist der detaillierte Inhalt vonWarum schlägt mein Aufruf einer gespeicherten Prozedur mit „Zu viele Argumente angegeben' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn