2013-02-21 126 views
1

我有一个表格,其中一列([To])定义为nvarchar(max)。根据http://msdn.microsoft.com/en-gb/library/ms186939.aspxnvarchar(max)列的最大长度为2^32。SqlBindParameter nvarchar(max)列上的无效精度值

我试图绑定一个字符串> 4000个字符(我猜的成功是4000的门槛,但我并没有实际证明)此列及其与HY104失败:1:0

的SQLBindParameter:HY104:1:0:[微软] [SQL Server本机客户端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 

我在做什么错?

+0

“nvarchar(max)”的最大长度是20亿字节 - 或10亿个字符(因为每个字节总是2个字节) – 2013-02-21 16:47:45

回答

3

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

+0

您知道阈值是4000还是其他值?谢谢。 – user2284063 2017-07-13 10:49:21

相关问题