0

我在表中有一个字段,我想存储一个可能很长的错误字符串。为此,我选择了 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。

4

3 回答 3

2

varchar(MAX)是在 SQL Server 2005 版中引入的。我假设您使用的是 2000 版。如果是这样,那么你可以枯萎使用varchar(8000)Text

于 2010-10-18T16:49:45.637 回答
2

我猜 Access 2003 不知道MAX关键字代表什么,因为这是在 SQL 2005 中引入的。我不确定你是否可以通过使用TEXT数据类型来欺骗 Access 并让 SQL 正确地将其映射到VARCHAR(MAX)列,然而。

于 2010-10-18T17:07:02.080 回答
0

我会首先查看数据库中列的定义以确认数据类型。

SQL_LONGVARCHAR 是映射到备注字段的服务器类型,我假设它是您想要用于此数据的 Access 数据类型。如果该假设是正确的,那么您似乎需要将服务器数据类型更改为 SQL_LONGVARCHAR(例如,将列创建为类型“text”而不是“varchar(max)”)。

于 2010-10-18T16:51:12.963 回答