Я написал фрагмент кода на c #, который выполняет хранимую процедуру в окне MS SQL. Создаю ИП вроде так:
SqlCommand command = new SqlCommand(creditLimitRequestSP, connection);
command.CommandType = System.Data.CommandType.StoredProcedure;
Затем я создаю набор параметров, используя конструктор для параметров:
SqlParameter p1 = new SqlParameter(p1, p1Value);
vdnParam.Size = 7;
Некоторые из моих параметров являются целыми числами, и в этом случае я анализирую их следующим образом:
int p4Value = 0;
bool parsedP4 = Int32.TryParse(p4AsAString, out p4Value);
SqlParameter p4;
if (parsedP4)
{
p4 = new SqlParameter("@p4", SqlDbType.Int, p4Value);
p4.Size = sizeof(Int32);
}
else
{
throw new InvalidFieldDataException("p4", p4AsString);
}
Затем, после того, как я проанализировал параметры из словаря, я добавил их так:
command.Parameters.Add(p1);
command.Parameters.Add(p2);
command.Parameters.Add(p3);
command.Parameters.Add(p4);
command.Parameters.Add(p5);
command.Parameters.Add(p6);
Когда я выполняю хранимую процедуру, я получаю исключение, говорящее мне, что ожидает параметр, который я добавил в команду. Зачем это делать?
Первоначально я думал, что это может быть потому, что параметры добавляются в неправильном порядке, но я изменил их, чтобы они соответствовали порядку в хранимой процедуре (событие, хотя это не должно иметь значения, поскольку я использую именованные параметры), и это не ничего не решить.
Рассматриваемый параметр не имеет значения по умолчанию в SP и является целочисленным значением.