2012-08-01 3 views
0
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; 
     } 
+0

Oui, il est - ou il ne travaille pas pour toi? –

+0

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

+0

l'a ajouté, jetez un oeil – Testifier

Répondre

1

Oui. Bien que si votre connexion échoue à ouvrir, vous obtiendrez une erreur dans votre finally

Et si cela est SQL Server, ne commencez pas vos noms de procédure stockée avec sp

Questions connexes