Maison >base de données >tutoriel mysql >Pourquoi ma procédure stockée obtient-elle une erreur « Trop d'arguments spécifiés » ?
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
Cependant, la définition de [etl_M_Update_Promo] déclare un seul argument :
ALTER PROCEDURE [etl].[etl_M_Update_Promo] @GenId bigint = 0
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 :
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
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.
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!