Maison > base de données > tutoriel mysql > Pourquoi ma procédure stockée obtient-elle une erreur « La procédure ou la fonction a trop d'arguments » ?

Pourquoi ma procédure stockée obtient-elle une erreur « La procédure ou la fonction a trop d'arguments » ?

Patricia Arquette
Libérer: 2024-12-20 12:35:20
original
681 Les gens l'ont consulté

Why Does My Stored Procedure Get a

La procédure ou la fonction comporte trop d'arguments : identification et résolution du problème

Lors de l'exécution d'une procédure stockée qui appelle une autre procédure stockée, vous pouvez rencontrez l'erreur "La procédure ou la fonction [nom] a trop d'arguments spécifiés." Cette erreur indique que la procédure appelante tente de transmettre trop d'arguments à la procédure appelée.

Comprendre le message d'erreur

Le message d'erreur spécifie qu'une procédure stockée particulière ou la fonction, dans ce cas, "etl_M_Update_Promo", a reçu plus d'arguments qu'elle ne peut en gérer. Cela signifie que le code appelant la procédure tente de lui envoyer plus de paramètres que la procédure n'est conçue pour en recevoir.

Identifier les arguments excessifs

Pour déterminer l'excès d'arguments arguments, comparez le nombre de paramètres transmis à la procédure dans le code appelant avec le nombre déclaré dans la définition de la procédure appelée. Dans ce cas, vous invoquez "etl_M_Update_Promo" avec deux paramètres ("@GenID" et "@Description"), alors que la procédure n'a qu'un seul paramètre déclaré ("@GenId").

Résolution le problème

La solution est de modifier le code appelant pour l'aligner sur la liste des paramètres de la procédure. La définition de la procédure peut également être modifiée si nécessaire. Voici comment résoudre le problème dans ce cas précis :

  1. Modifier le code d'appel : Ajustez le code qui appelle "etl_M_Update_Promo" pour fournir uniquement le paramètre requis : " @GenID."

    EXEC etl.etl_M_Update_Promo @GenID
    Copier après la connexion
  2. Modifier la procédure Définition : Vous pouvez également modifier la définition de "etl_M_Update_Promo" pour accepter deux paramètres, en ajoutant la ligne suivante :

    @Description NVARCHAR(50)
    Copier après la connexion

    Définition de procédure révisée :

    ALTER PROCEDURE [etl].[etl_M_Update_Promo]
    @GenId bigint = 0,
    @Description NVARCHAR(50)
    AS 
    
    .... Rest of your code.
    Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal