代码之家  ›  专栏  ›  技术社区  ›  webworm

SQL Server varchar(max)参数导致“参数对象定义不正确”

  •  0
  • webworm  · 技术社区  · 14 年前

    我在表中有一个字段要存储一个可能很长的错误字符串。为此,我选择varchar(max)作为数据类型。我创建了一个用于在表中输入数据的存储过程,并为字段“ErrorDescription”使用了以下参数定义。

    @ErrorDescription as varchar(MAX)
    

    问题出在调用存储过程以记录错误的ADO过程(在Access2003中)中。我将错误描述作为字符串值,并尝试将其分配给参数…

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

    但它失败了,错误如下。

    “参数对象定义不正确”

    如果我将存储过程定义更改为…

     @ErrorDescription as varchar(255)
    

    然后一切正常。如何定义存储过程参数以接受可能非常长的字符串?是 varchar(MAX) 要使用的数据类型错误?谢谢您。

    编辑 我应该提到我使用的SQL Server版本。我正在使用SQL Server 2008。

    3 回复  |  直到 14 年前
        1
  •  2
  •   Gabriel McAdams    14 年前

    varchar(MAX) 是随2005版SQL Server引入的。我假设您使用的是2000版本。如果是这样,那么你就可以停止使用 varchar(8000) Text

        2
  •  2
  •   jwheron    14 年前

    我想Access2003不知道 MAX 关键字表示,因为它是在SQL 2005中引入的。我不确定您是否可以使用 TEXT 数据类型并让SQL将其正确映射到 VARCHAR(MAX) 不管是不是列。

        3
  •  0
  •   Roadie57    14 年前

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

    sql_longvarchar是映射到memo字段的服务器类型,我假设它是您希望用于此数据的访问数据类型。如果假设正确,您可能需要将服务器数据类型更改为sql_longvarchar(例如,将列创建为类型“text”而不是“varchar(max)”)。

    推荐文章