У меня есть SqlCommand, который запускает хранимую процедуру, которая содержит два целочисленных выходных параметра.Непосредственно перед запуском SqlCommand я вижу, что выходные параметры установлены на правильные значения, однако, когда команда фактически выполняется, она использует NULL для параметра 1 и 0 для параметра 2 (проверено с помощью SQL Profiler) независимо от того, для чего я установил параметры.
Упрощенная версия кода выглядит так:
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) Оба параметрацелые числа и определены точно так же - Почему один установлен в NULL, а другой в 0 ??