Maison > base de données > tutoriel mysql > Pourquoi mon code C# renvoie-t-il une valeur nulle lors de la récupération d'une valeur de retour à partir d'une procédure stockée ?

Pourquoi mon code C# renvoie-t-il une valeur nulle lors de la récupération d'une valeur de retour à partir d'une procédure stockée ?

Patricia Arquette
Libérer: 2025-01-05 21:20:43
original
281 Les gens l'ont consulté

Why is my C# code returning a null value when retrieving a return value from a stored procedure?

Dépannage de la récupération de la valeur de retour à partir d'une procédure stockée en C#

Lorsque vous essayez de récupérer une valeur de retour à partir d'une procédure stockée en C#, vous pouvez rencontrez un problème où la valeur renvoyée est nulle. Voici une explication détaillée du problème et une solution :

Description du problème :

Vous avez défini une procédure stockée Transact-SQL qui prend deux paramètres : @a en entrée et @b en sortie. La procédure stockée définit @b sur le résultat d'une requête et vous prévoyez de récupérer la valeur de @b dans votre code C#. Cependant, lorsque vous exécutez la procédure stockée et tentez de lire la valeur de retour, vous obtenez null.

Extrait de code :

SqlConnection SqlConn = ...;
SqlCommand sqlcomm = new SqlCommand("Validate", SqlConn);
sqlcomm.CommandType = CommandType.StoredProcedure;
sqlcomm.Parameters.Add("...", SqlDbType.VarChar, ParameterDirection.Input);
SqlParameter retval = sqlcomm.Parameters.Add("...", SqlDbType.VarChar);
retval.Direction = ParameterDirection.ReturnValue;
sqlcomm.ExecuteNonQuery(); // MISSING
string retunvalue = (string)sqlcomm.Parameters["..."].Value;
Copier après la connexion

Erreur logique :

Le morceau de code manquant dans votre routine C# est l'appel ExecuteNonQuery. L'exécution de la procédure stockée lance la requête de base de données et met à jour le paramètre de sortie @b. Sans cet appel, la procédure stockée ne s'exécutera pas et la valeur de retour reste inchangée.

Solution :

Incluez la méthode ExecuteNonQuery avant de récupérer la valeur de retour :

sqlcomm.ExecuteNonQuery();
string retunvalue = (string)sqlcomm.Parameters["..."].Value;
Copier après la connexion

Après avoir effectué cette modification, votre code récupérera correctement la valeur de retour attribuée à @b dans la procédure stockée.

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