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

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

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

Однако возникает эта ошибка:

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


person RuMoR    schedule 25.12.2011    source источник


Ответы (3)


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

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

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

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

person marc_s    schedule 25.12.2011
comment
У меня есть вопрос, потому что у меня такое же исключение... если столбец varchar, в чем опасность наличия varchar в вашем SP и коде с использованием DbType.AnsiString - person Chillin'; 05.03.2019
comment
Он известен как атрибут Size на тот случай, если вам нужно указать его, как это сделал я. - person thalacker; 22.08.2019

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

cmd.Parameters.Add("@Description", SqlDbType.VarChar, 150).Direction =
    ParameterDirection.Output;
person Community    schedule 23.02.2017
comment
Это не добавляет ничего полезного к ответу, который предшествовал ему на 5 лет. - person TylerH; 18.06.2020

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

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

введите здесь описание изображения

person tno2007    schedule 26.11.2020