OLEDB比较问题nvarchar的反对NTEXT(SQLServer的2005年)(OLEDB c

2019-11-01 02:36发布

我有表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 treates该参数为NTEXT。 有什么建议么? 先感谢您。

Answer 1:

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

它应该是这样的:

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

下一个。 我想分析代码,看什么呢你提供真正生成SQL语句的条款。 结果可能使人对谁在错误的参数类型有罪的问题做了解释。



文章来源: OLEDB comparison problem nvarchar against ntext (SQLServer 2005)