jdbc-specには、バッチ更新のリターンコードについて次のように記載されています。
■0以上—コマンドは正常に処理され、値は、コマンドの実行によって影響を受けたデータベース内の行数を示す更新カウントです。第14章バッチ更新121
■Statement.SUCCESS_NO_INFO—コマンドは正常に処理されましたが、影響を受ける行数は不明です
Statement.SUCCESS_NO_INFOは-2として定義されているため、結果はすべて正常に機能したことを示していますが、更新された列の数に関する情報は取得されません。
oracle-documentationの状態:
•プリペアドステートメントバッチの場合、バッチ内の個々のステートメントによってデータベース内の影響を受ける行数を知ることはできません。したがって、すべての配列要素の値は-2です。 JDBC 2.0仕様によると、値-2は、操作は成功したが、影響を受ける行数は不明であることを示します。
•汎用ステートメントバッチの場合、配列には、各操作の影響を受ける行数を示す実際の更新カウントが含まれます。実際の更新カウントは、標準バッチのOracle実装の汎用ステートメントの場合にのみ提供できます。
•呼び出し可能なステートメントバッチの場合、サーバーは、各操作の影響を受ける行数に関係なく、更新カウントとして常に値1を返します。
したがって、更新カウントが必要な場合は、PreparedStatement
を使用できないようです。 sただし、プレーンなStatement
にフォールバックする必要があります s。