1

我有一个表,其中有一列 ( [To]) 定义为nvarchar(max). 根据http://msdn.microsoft.com/en-gb/library/ms186939.aspx,一列的最大长度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 服务器详细信息:

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

我究竟做错了什么?

4

1 回答 1

4

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

于 2013-02-21T17:22:26.893 回答