Минимальные данные, необходимые для отправки действительного 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#, чтобы он был передан правильно?

0 ответов

Другие вопросы по тегам