Maison > base de données > tutoriel mysql > Pourquoi ma procédure stockée obtient-elle une erreur « Trop d'arguments spécifiés » ?

Pourquoi ma procédure stockée obtient-elle une erreur « Trop d'arguments spécifiés » ?

DDD
Libérer: 2024-12-26 03:18:15
original
637 Les gens l'ont consulté

Why Does My Stored Procedure Get a

Trop d'arguments spécifiés dans les procédures stockées

Problème :

Lors de l'exécution d'une procédure stockée qui appelle une autre procédure stockée, vous pouvez rencontrer le message d'erreur « La procédure ou la fonction comporte trop d'arguments spécifiés. » Cette erreur indique une inadéquation entre le nombre d'arguments passés à la procédure appelée et le nombre d'arguments qu'elle est déclarée accepter.

Identification :

Pour identifier l'erreur arguments, examinez les paramètres déclarés dans la définition de la procédure appelée. Comparez ces paramètres aux arguments transmis par la procédure appelante. L'incompatibilité identifiera où se trouvent les arguments en excès.

Analyse du code fourni :

Dans l'extrait de code donné, l'erreur se produit car vous appelez la procédure stockée [ etl_M_Update_Promo] avec deux arguments :

EXEC etl.etl_M_Update_Promo @GenID, @Description
Copier après la connexion

Cependant, la définition de [etl_M_Update_Promo] déclare un seul argument :

ALTER PROCEDURE [etl].[etl_M_Update_Promo]
    @GenId bigint = 0
Copier après la connexion

Par conséquent, SQL Server renvoie le message d'erreur, indiquant que la procédure appelée attend un argument, alors qu'elle en reçoit deux.

Résolution :

Pour résoudre le problème, alignez le nombre d'arguments transmis à la procédure appelée avec le nombre qu'elle attend. Dans ce cas, vous avez deux options :

  1. Supprimer l'argument en excès :
    Modifiez le code dans [dbo].[M_UPDATES] pour supprimer le deuxième argument :

    EXEC etl.etl_M_Update_Promo @GenID
    Copier après la connexion
  2. Ajouter les manquants Paramètre :
    Modifiez la définition de [etl_M_Update_Promo] pour inclure le deuxième paramètre :

    ALTER PROCEDURE [etl].[etl_M_Update_Promo]
        @GenId bigint = 0,
        @Description NVARCHAR(50)
    AS 
    
    .... Rest of the 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal