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;
}
예 그것이 SP와 저장 프로 시저의 이름을 시작하지 마십시오 - 나에게 어떤 일을하지 않습니다 너를 위해서? –
내가 묻는 이유는 결과가 Convert.ToInt32 (returnParameter.Value) 였기 때문입니다. 쿼리를 실행하기 전에 결과 변수를 1에서 0으로 변경했습니다. 쿼리의 실행이 아직 이루어지지 않았으므로 그 이유가 확실하지 않았습니다. – Testifier
이 추가되었으므로 리턴 값의 기본값이 0이 될 것이므로 – Testifier