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;
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;
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!