0

我有表 Tbl1( SomeName nvarchar(64) )

通过 OLEDB 我正在尝试选择 SELECT 1 FROM Tbl1 WHERE SomeName = ?

绑定 3 个字符 unicode 作为参数原因: DB_E_ERRORSINCOMMAND(0x80040E14L) “数据类型 nvarchar 和 ntext 在等于运算符中不兼容”

我已经尝试过以下输入绑定:

1)...
    currentBind.wType         = DBTYPE_VARIANT;
    currentBind.cbMaxLen      = 20
    // where data points to valid VT_BSTR allocated by SysAllocString
...
2)...
    currentBind.wType         = DBTYPE_WSTR;
    currentBind.cbMaxLen      = 20
    // where data points to valid VT_BSTR allocated by SysAllocString
...

在任何情况下,SQLServer 都会将此参数视为 ntext。有什么建议么?先感谢您。

4

1 回答 1

1

快速而肮脏的 hack:更改查询。

它应该如下所示:

SELECT 1 FROM Tbl1 WHERE SomeName = cast(? as nvarchar(64))

下一个。我会分析代码以查看您的提供程序在 SQL 语句方面实​​际生成了什么。结果可能会阐明谁对错误的参数输入有罪的问题。

于 2009-08-05T16:36:02.800 回答