Свойство размера имеет недопустимый размер 0

Я работаю в социальной сети, одна из моих процедур возвращает вывод VARCHAR. Так вот что я написал:

SqlParameter job1 = cmd2.Parameters.Add("@job", SqlDbType.VarChar);
job1.Direction = ParameterDirection.Output;

Однако эта ошибка появляется:

Строка [1]: свойство Size имеет недопустимый размер 0.

4 ответа

Решение

Вы должны определить длину при указании varchar параметр:

SqlParameter job1 = cmd2.Parameters.Add("@job", SqlDbType.VarChar, 50);

Вы должны использовать ту же длину, которая определена в вашей хранимой процедуре SQL Server.

И кстати: если ваша хранимая процедура также не имеет определенной длины (что-то вроде @job VARCHAR OUTPUT) - тогда вы определили varchar строка длиной 1 символ......

Да, нужно определить длину для varchar / nvarchar Тип данных, как показано ниже.

cmd.Parameters.Add("@Description", SqlDbType.VarChar, 150).Direction =
    ParameterDirection.Output;

Если вы используете Dapper, вы передали для параметра нулевое значение, где ожидаемым вводом была строка.

Чтобы найти ошибочное значение и его параметр, проверьте объект Dapper DynamicParameters во время сеанса отладки и откройте параметры, на которые ссылается индекс.

Назначьте пустую строку выходному параметру перед вызовом хранимой процедуры, и это должно избавиться от ошибки:

задание1.Значение = строка.Пустой;

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