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
Libérer: 2025-01-06 16:33:40
original
1026 Les gens l'ont consulté

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
Copier après la connexion

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;
Copier après la connexion

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!

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