Минимальные данные, необходимые для отправки действительного SqlParameter
Я заметил странное поведение при создании параметров хранимой процедуры, которую я вызываю. В используемой таблице есть столбец с типом VARCHAR(16). Когда я строил параметр для этого столбца, мой первый инстинкт был сделать это так:
ret = new SqlParameter();
ret.ParameterName = name;
ret.Value = (string)value;
Этот подход дал мне ошибку, сказав String or binary data would be truncated
,
Метод, который работает, когда я строю параметр как таковой:
ret = new SqlParameter(name, type, length);
ret.ParameterName = name;
ret.Value = (string)value;
Интересно то, что когда я устанавливаю длину для параметра varchar, если значение является пустой строкой, хранимая процедура будет выполняться без заминок. Однако когда я добавляю одну или более букв в поле значения, появляется та же ошибка.
Мои вопросы: почему он принимает параметр, который является нулевым или пустым с неправильным объявлением длины, и какова минимальная информация, которую вы должны предоставить параметру в C#, чтобы он был передан правильно?