OLEDBの比較問題nvarcharとntext(SQLServer 2005)
-
22-07-2019 - |
質問
テーブル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として扱います。 助言がありますか?よろしくお願いします。
解決
クイックでダーティなハック:クエリを変更します。
次のようになります。
SELECT 1 FROM Tbl1 WHERE SomeName = cast(? as nvarchar(64))
次へ。コードをプロファイリングして、プロバイダーがSQLステートメントの観点から実際に生成するものを確認します。この結果は、間違ったパラメーターの入力に対して誰が罪を犯したのかという問題にいくらかの光を投げかけることができます。
所属していません StackOverflow