SqlBindParameter nvarchar(max)列上的精度值无效

时间:2013-02-21 16:45:16

标签: sql-server-2008 nvarchar sqlbindparameter

我的表格中有一列([To])定义为nvarchar(max)。根据{{​​3}},nvarchar(max)列的最大长度为2 ^ 32。

我正在尝试绑定字符串> 4000个字符(我猜测成功的门槛是4000,但我实际上没有证明这一点)到这个专栏并且它失败了HY104:1:0

  

SQLBindParameter:HY104:1:0:[Microsoft] [SQL Server Native Client 11.0]无效的精度值

我尝试绑定的字符串示例长度为21707.

我尝试使用以下ODBC驱动程序运行,结果对所有这些驱动程序都相同:

{SQL Server}
{SQL Server Native Client 10.0}
{SQL Server Native Client 11.0}

我正在进行的实际通话是: -

Q->ret = SQLBindParameter(Q->stmt, i, SQL_PARAM_INPUT, SQL_C_WCHAR, SQL_WVARCHAR, 
    (SQLINTEGER) (len ? len : 1), 0, data, (SQLINTEGER) len, 0);

其中: -

len = 21707
data = unicode string of length 21708 characters (43414 bytes) followed by (WORD)0

SQL Server详细信息:

Microsoft SQL Server Express Edition with Advanced Services (64-bit)
10.50.2550.0
Windows 7 64 bit

我做错了什么?

1 个答案:

答案 0 :(得分:3)

答案是,在绑定长字符串时,我需要使用SQL_WLONGVARCHAR而不是SQL_WVARCHAR。