1

これは、最大長が 50 の値を 30 文字しか保持できないバッファにフェッチするときに発生します。

私はすでにエラーを調べ、可能な解決策を見つけました。それは、値がバインドされているバッファのサイズを拡張することです。

問題は、これが一部のシステムでのみ発生し、他のシステムでは発生しないことです。Oracle のバージョンはこれと関係がありますか? もしそうなら、このエラーが変更されたバージョンは何ですか?

使用する Oracle のバージョンは 10.2.0.1 と 10.2.0.3 です。

4

2 に答える 2

1

質問に記載されているバグは 10.2.0.3 で修正されており、エラーはそれ以前の Oracle バージョンでのみ発生します。編集: Oracle 10.2.0.4 でも同じ問題が見られました。私たちはまだこれを調べています

Edit2: OCI で CHAR/VARCHAR 列のカーソルを定義する場合 (この目的のためにラッパーを使用します)、列にバインドされる文字列のサイズは、列の最大幅より少なくとも 1 つ大きくなければなりません。

例 列名: U_NAME タイプ: VARCHAR(30)

1. char zName[30]; pCursor->Define(zName, 3O); // 列に 30 文字の値がある場合、これはクラッシュします

2. char zName[31]; pCursor->Define(zName, 3O); // 列に 30 文字の値がある場合、これはクラッシュします

3. char zName[31]; pCursor->Define(zName, 31); // 正しい。どんな値でもクラッシュしません

于 2009-09-22T11:06:07.647 に答える
0

コードにバグがあり、50文字を受け取る可能性がある場合に30文字しか許可されません。バグが問題を引き起こすOracleのバージョンを心配するのではなく、単に修正してみませんか?

于 2009-09-22T09:43:48.170 に答える