Maison >base de données >tutoriel mysql >Pourquoi ma procédure stockée génère-t-elle une erreur « La procédure ou la fonction attend un paramètre qui n'a pas été fourni » ?

Pourquoi ma procédure stockée génère-t-elle une erreur « La procédure ou la fonction attend un paramètre qui n'a pas été fourni » ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-06 16:33:401056parcourir

Why Does My Stored Procedure Throw a

Incompatibilité des paramètres de procédure stockée : "La procédure ou la fonction attend un paramètre qui n'est pas fourni"

Lorsque vous travaillez avec la connectivité de la base de données, il est crucial d'aligner les paramètres définis dans une procédure stockée avec ceux transmis à partir du code appelant. Ne pas le faire peut entraîner une erreur telle que "La procédure ou la fonction 'SHOWuser' attend le paramètre '@userID', qui n'a pas été fourni."

Dans l'exemple fourni, la procédure stockée SHOWuser est censée recevoir trois paramètres : @userName, @password et @emailAddress. Cependant, le code tente d'exécuter la procédure stockée sans fournir de valeur pour le paramètre @userID, qui est utilisé dans les instructions INSERT et SELECT suivantes au sein de la procédure.

Résolution de l'incompatibilité des paramètres

Pour résoudre le problème, vous devez vous assurer que tous les paramètres requis par la procédure stockée sont inclus dans cmd.Parameters collection :

cmd.Parameters.AddWithValue("@userName", userName);
cmd.Parameters.AddWithValue("@password", password);
cmd.Parameters.AddWithValue("@emailAddress", emailAddress);
cmd.Parameters.AddWithValue("@userID", user_id); // Add the missing parameter

Une fois que tous les paramètres nécessaires sont pris en compte, la procédure stockée doit s'exécuter avec succès sans erreur d'incompatibilité de paramètre.

Considérations supplémentaires

Il convient également de noter que le type de commande doit être spécifié explicitement en tant que procédure stockée :

cmd.CommandType = System.Data.CommandType.StoredProcedure;

Cela garantit que le serveur de base de données connaît la nature de la commande en cours d'exécution. Sans spécifier le type de commande, vous pouvez rencontrer un comportement inattendu.

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!

Déclaration:
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