public int Test()
{
int result = 1;
SqlCommand cmd = new SqlCommand("spTest", conn);
cmd.CommandType = CommandType.StoredProcedure;
var returnParameter = cmd.Parameters.Add("@RETURN_VALUE", SqlDbType.Int);
returnParameter.Direction = ParameterDirection.ReturnValue;
try
{
conn.Open();
cmd.ExecuteNonQuery();
result = Convert.ToInt32(returnParameter.Value);
}
catch (Exception e)
{
MessageBox.Show(e.Message.ToString());
}
finally
{
conn.Close();
}
return result;
}
La méthode commence par result = 1, donc je peux la voir changer à 0 si la requête est réussie. J'ai testé cela et il change de 1 à 0. Ma question est, est-ce la bonne façon d'obtenir le RETURN_VALUE par défaut d'une procédure stockée?
Récupère la valeur par défaut RETURN VALUE d'une procédure stockée?
Cela a également changé la valeur du résultat de 1 à 0. Pourquoi? La requête n'a pas encore été exécutée.
public int Test()
{
int result = 1;
SqlCommand cmd = new SqlCommand("spTest", conn);
cmd.CommandType = CommandType.StoredProcedure;
var returnParameter = cmd.Parameters.Add("@RETURN_VALUE", SqlDbType.Int);
returnParameter.Direction = ParameterDirection.ReturnValue;
result = Convert.ToInt32(returnParameter.Value);
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception e)
{
MessageBox.Show(e.Message.ToString());
}
finally
{
conn.Close();
}
return result;
}
Oui, il est - ou il ne travaille pas pour toi? –
La raison pour laquelle je demande était parce que j'avais le résultat = Convert.ToInt32 (returnParameter.Value); AVANT d'exécuter la requête et il a changé la variable de résultat de 1 à un 0. Donc je ne savais pas pourquoi cela se produirait, étant donné que l'exécution de la requête n'avait pas encore eu lieu. – Testifier
l'a ajouté, jetez un oeil – Testifier