Heim > Datenbank > MySQL-Tutorial > Warum erhält meine gespeicherte Prozedur den Fehler „Prozedur oder Funktion hat zu viele Argumente'?

Warum erhält meine gespeicherte Prozedur den Fehler „Prozedur oder Funktion hat zu viele Argumente'?

Patricia Arquette
Freigeben: 2024-12-20 12:35:20
Original
679 Leute haben es durchsucht

Why Does My Stored Procedure Get a

Prozedur oder Funktion hat zu viele Argumente: Identifizieren und Lösen des Problems

Beim Ausführen einer gespeicherten Prozedur, die eine andere gespeicherte Prozedur aufruft, kann es sein, dass Sie Es kommt der Fehler „Prozedur oder Funktion [Name] hat zu viele Argumente angegeben.“ Dieser Fehler weist darauf hin, dass die aufrufende Prozedur versucht, zu viele Argumente an die aufgerufene Prozedur zu übergeben.

Verstehen der Fehlermeldung

Die Fehlermeldung gibt an, dass es sich um eine bestimmte gespeicherte Prozedur handelt oder der Funktion, in diesem Fall „etl_M_Update_Promo“, wurden mehr Argumente bereitgestellt, als sie verarbeiten kann. Dies bedeutet, dass der Code, der die Prozedur aufruft, versucht, mehr Parameter an ihn zu senden, als die Prozedur empfangen soll.

Identifizieren der übermäßigen Argumente

Um die übermäßigen Argumente zu ermitteln Argumente vergleichen die Anzahl der Parameter, die im aufrufenden Code an die Prozedur übergeben werden, mit der Anzahl, die in der Definition der aufgerufenen Prozedur deklariert ist. In diesem Fall rufen Sie „etl_M_Update_Promo“ mit zwei Parametern („@GenID“ und „@Description“) auf, während die Prozedur nur einen deklarierten Parameter („@GenId“) hat.

Auflösung das Problem

Die Lösung besteht darin, den aufrufenden Code so zu ändern, dass er mit der Parameterliste der Prozedur übereinstimmt. Bei Bedarf kann auch die Prozedurdefinition geändert werden. So lösen Sie das Problem in diesem speziellen Fall:

  1. Ändern Sie den Aufrufcode: Passen Sie den Code an, der „etl_M_Update_Promo“ aufruft, um nur den erforderlichen Parameter bereitzustellen: „ @GenID."

    EXEC etl.etl_M_Update_Promo @GenID
    Nach dem Login kopieren
  2. Ändern Sie das Verfahren Definition: Alternativ können Sie die Definition von „etl_M_Update_Promo“ ändern, um zwei Parameter zu akzeptieren, indem Sie die folgende Zeile hinzufügen:

    @Description NVARCHAR(50)
    Nach dem Login kopieren

    Revised Procedure Definition:

    ALTER PROCEDURE [etl].[etl_M_Update_Promo]
    @GenId bigint = 0,
    @Description NVARCHAR(50)
    AS 
    
    .... Rest of your code.
    Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum erhält meine gespeicherte Prozedur den Fehler „Prozedur oder Funktion hat zu viele Argumente'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage