Параметр SQL Server varchar (MAX) приводит к «Неправильно определен объект параметра» - PullRequest
0 голосов
/ 18 октября 2010

У меня есть поле в таблице, в котором я хочу сохранить потенциально длинную строку ошибки.Для этого я выбрал varchar (MAX) в качестве типа данных.Я создал хранимую процедуру, которая используется для ввода этих данных в таблицу, а для поля «ErrorDescription» я использовал следующее определение параметра.

@ErrorDescription as varchar(MAX)

Проблема в процедуре ADO (в Access 2003) который вызывает хранимую процедуру для регистрации ошибки.Я беру описание ошибки в качестве строкового значения и пытаюсь присвоить его параметру ...

cmd.Parameters("@ErrorDescription").Value = errorDescription

, но это не удается из-за следующей ошибки.

"Объект параметранеправильно определено "

Если я изменю определение хранимой процедуры на ...

 @ErrorDescription as varchar(255)

Тогда все будет хорошо.Как определить параметр хранимой процедуры для приема потенциально очень длинной строки?varchar(MAX) неверный тип данных для использования?Спасибо.

РЕДАКТИРОВАТЬ Я должен был упомянуть версию SQL Server, которую я использовал.Я использую SQL Server 2008.

Ответы [ 3 ]

2 голосов
/ 18 октября 2010

Я думаю, что Access 2003 не знает, что представляет собой ключевое слово MAX, поскольку оно было введено в SQL 2005. Я не уверен, что вы могли бы обмануть Access, используя тип данных TEXT, и иметь SQLоднако правильно сопоставьте это с VARCHAR(MAX) столбцом.

2 голосов
/ 18 октября 2010

varchar(MAX) был представлен в SQL Server версии 2005. Я предполагаю, что вы используете версию 2000. Если это так, то вы можете использовать varchar(8000) или Text

0 голосов
/ 18 октября 2010

Сначала я посмотрю на определение столбца в базе данных, чтобы подтвердить тип данных.

SQL_LONGVARCHAR - это тип сервера, который сопоставлен с полем Memo, который я предполагаю как тип данных Access, который вы хотите для этогоданные.Если это предположение верно, похоже, вам нужно изменить тип данных сервера на SQL_LONGVARCHAR (например, создать столбец как тип 'text' вместо 'varchar (max)').

...