J'essaie d'obtenir le jeu de résultats et la valeur de retour d'un proc stocké sur le serveur SQL 2008. Quand je lance le proc dans le studio de gestion sql, j'obtiens le jeu de résultats et la valeur de retour.Valeur renvoyée à l'aide de SqlCommand
Cependant, lorsque j'essaie d'obtenir la valeur en C# 4.0, la valeur du paramètre est nulle. Voici mon code C#.
using (ConnectionManager<SqlConnection> cn = ConnectionManager<SqlConnection>.GetManager(CultureInfo.CurrentCulture.Name))
{
using (SqlCommand cm = cn.Connection.CreateCommand())
{
cm.CommandText = "Name of proc here";
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.AddWithValue("@ApplicationId", ApplicationId);
cm.Parameters.AddWithValue("@Index", Index);
if (PageSize > 0)
cm.Parameters.AddWithValue("@PageSize", PageSize);
cm.Parameters.Add("@ReturnValue", SqlDbType.Int);
cm.Parameters["@ReturnValue"].Direction = ParameterDirection.ReturnValue;
using (IDataReader dr = cm.ExecuteReader())
{
SafeDataReader sdr = new SafeDataReader(dr);
while (sdr.Read())
{
UserApplicationEntity uae = new UserApplicationEntity();
uae.UserId = sdr.GetGuid("UserId");
uae.ExternalId = sdr.GetString("ExternalId");
Result.Value.Collection.Add(uae);
}
Result.Value.TotalResults = (int)cm.Parameters["@ReturnValue"].Value;
}
}
}
La dernière ligne où j'appelle Result.Value.TotalResults = (int) cm.Parameters [ "@ de ReturnValue"] Valeur; est où la valeur est nulle. Chaque tutoriel ou post que j'ai trouvé, je semble faire tout correctement. À ce stade, je pense que je manque juste quelque chose de petit et que j'ai besoin d'un autre ensemble d'yeux. J'ai également essayé de définir le paramètre de retour avant tous les autres comme un message que j'ai trouvé sur le site MS a dit que je devais, mais peu importe où il est, il renvoie null.
A dû le déplacer en dehors du bloc using pour l'obtenir pour fermer le lecteur. Jamais je n'aurais pensé que c'était le cas. Merci! – phreak3eb