0

パラメータ化された SQL クエリを使用して、Oracle の RAW(16) フィールドに Guid を書き込もうとしています。

以前に RAW(16) を読み取った後、データベースからバイトのバリアント配列 (タイプ VT_ARRAY | VT_UI1) として取得されます。したがって、値をバイト配列として書き戻そうとしています。

私のバリアントは VT_ARRAY | に設定されています。VT_UI1 が再度呼び出され、CreateParameter が adUnsignedTinyInt | で呼び出されます。adArray.

残念ながら、これにより 0X800A0D5D コードがスローされます。

また、CreateParameter の呼び出しで adBSTR を使用して、「HEXTORAW('0000000000000000')」を BSTR パラメータとして使用してパラメータを書き込もうとしました。今度は CreateParameter は成功しましたが、_ADODB::CommandPtr で Execute を呼び出すとエラーがスローされました。

パラメータ化されたSQLクエリを使用して(理想的にはC ++を介してADOを使用して)OracleのRAW(16)にGuidを書き込む方法について、誰かが私を案内してくれませんか?

4

1 に答える 1

0

VT_ARRAY | を使用してこれを機能させました。私のバリアントの VT_UI1 は、adBinary をデータ型として CreateParameter に渡します。

(私が読んだ他のことから) Oracle が HEX 表記のバイナリ データのみを含むプレーンな BSTR パラメータに満足する可能性もあります。

于 2013-09-20T16:12:39.620 に答える