OLEDB проблема сравнения nvarchar с ntext (SQLServer 2005) - PullRequest
0 голосов
/ 05 августа 2009

у меня есть таблица Tbl1 ( SomeName nvarchar (64) )

поверх OLEDB я пытаюсь выбрать SELECT 1 FROM Tbl1 WHERE SomeName = ?

привязка 3-символьного Unicode в качестве причины параметра: DB_E_ERRORSINCOMMAND (0x80040E14L) «Типы данных nvarchar и ntext несовместимы в операторе« равно »

Я уже пробовал следующие привязки ввода:

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

В любом случае SQLServer рассматривает этот параметр как ntext. Какие-либо предложения? Заранее спасибо.

1 Ответ

1 голос
/ 05 августа 2009

Быстрый и грязный хак: измените запрос.

Это должно выглядеть так:

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

Далее.Я бы профилировал код, чтобы увидеть, что на самом деле генерирует ваш провайдер с точки зрения операторов SQL.Результаты могут пролить свет на вопрос, кто виноват в неправильном наборе параметров.

...