2012-08-01 2 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; 
     } 

이 메서드는 결과가 1로 시작하므로 쿼리가 성공하면 0으로 변경되는 것을 볼 수 있습니다. 나는 이것을 테스트했고 1에서 0으로 바뀐다. 내 질문은 이것이 스토어드 프로 시저에서 디폴트 RETURN_VALUE를 얻는 올바른 방법인가?
저장 프로 시저에서 기본 반환 값을 가져 옵니까?

결과 값이 1에서 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; 

      result = Convert.ToInt32(returnParameter.Value); 

      try 
      { 
       conn.Open(); 
       cmd.ExecuteNonQuery(); 
      } 
      catch (Exception e) 
      { 
       MessageBox.Show(e.Message.ToString()); 
      } 
      finally 
      { 
       conn.Close(); 
      } 

      return result; 
     } 
+0

예 그것이 SP와 저장 프로 시저의 이름을 시작하지 마십시오 - 나에게 어떤 일을하지 않습니다 너를 위해서? –

+0

내가 묻는 이유는 결과가 Convert.ToInt32 (returnParameter.Value) 였기 때문입니다. 쿼리를 실행하기 전에 결과 변수를 1에서 0으로 변경했습니다. 쿼리의 실행이 아직 이루어지지 않았으므로 그 이유가 확실하지 않았습니다. – Testifier

+0

이 추가되었으므로 리턴 값의 기본값이 0이 될 것이므로 – Testifier

답변

1

예. 연결이 나타나지 않을 경우 있지만, 당신은 당신의 finally

에 오류가 발생합니다 그리고 이것은 SQL 서버의 경우,

관련 문제