두 정수 출력 매개 변수가 들어있는 저장 프로 시저를 실행하는 SqlCommand가 있습니다. SqlCommand가 실행되기 바로 전에 출력 매개 변수가 올바른 값으로 설정되었음을 알 수 있습니다. 그러나 명령이 실제로 실행될 때 매개 변수를 설정하는 것과 관계없이 parameter1에 NULL을, parameter2에 0을 사용합니다 (SQL Profiler를 사용하여 확인 됨). .C# - 출력 SqlParameter는 주어진 값과 다른 값을 사용합니까?
코드의 단순화 된 버전이 있습니다 :
foreach (KeyValuePair<string, object> parameter in outputParameters)
{
SqlParameter param = new SqlParameter(parameter.Key, parameter.Value);
param.Direction = ParameterDirection.Output;
command.Parameters.Add(param);
}
command.ExecuteNonQuery();
내가 여기에 다른 두 가지 혼동 해요 :
왜이 매개 변수의 값을 사용하지 않는1)? command.ExecuteNonQuery()
전에 바로 중단 점을 배치하고 command.Parameters 목록에 출력 매개 변수가 올바르게 설정되어 있는지 확인하지만 쿼리가 실행될 때 SQL 프로필러 추적에는 다른 매개 변수가 있습니다.
2) 두 매개 변수는 모두 정수이며 정확히 같은 방식으로 정의됩니다. 다른 하나는 0으로 설정되지만 다른 하나는 NULL로 설정되는 이유는 무엇입니까? 논리적으로는하지 입력에 값이 ... 즉, 값이 저장 프로 시저에서 를 제공하기위한 것입니다 -
가 저장된 프로 시저 –
저장된 프로 시저가 조금 긴 게시하고 문제가되지 않습니다 바랍니다 ... 그것은 SQL 관리 Studio 내에서 잘 실행됩니다. 내 문제는 SQLCommand에서 SQLServer로 전달되는 값이 그들이 말하는 내용이 아니라는 것입니다. – Rachel
귀하의 문제는 귀하의 매개 변수가 입력, 출력 또는 InputOutput인지 여부를 확인할 수 없습니다. 당신이 그들과 뭘하려고하는지 보지 않고는 아무도 올바른 대답을 제공 할 수 없습니다. 질문을 매우 크게하는 것에 대해 걱정하지 마십시오. 나는 그것을 처리 할 대역폭이있다. –