UpdateManyException.getUpdateCounts() メソッドを呼び出すことによって、異機種バッチ更新の更新カウントが含まれる 2 次元 int 配列を取得できます。 この配列には、バッチが正常に完了した場合に戻される更新カウントが含まれます。
配列内の値は、更新カウントか Java™ EXECUTE_FAILED になります。 配列内の情報を使用して、エラーの発生場所を見つけることができます。
配列の最初の次元の値は、異機種のバッチ更新内の更新操作のオフセットになります。
配列の 2 番目の次元は、SQLException の原因となった UpdateMany() に渡されるデータの行のオフセットになります。
com.ibm.pdq.runtime.exception.UpdateManyException: [pdq][10363][3.200.401] pureQuery™ が異種 SQL ステートメントから成るバッチを実行しているときに、1 つ以上の例外が発生しました。
メソッド getHeterogeneousUpdateCounts () を呼び出し、更新カウントの 2 次元 int 配列を戻して、失敗した SQL ステートメントを判別します。 配列の内容を以下の表にリストします。
| 配列指標 | カウント1 |
|---|---|
| [0][0] | 1 |
| [0][1] | 1 |
| [0][2] | 1 |
| [1][0] | 5 |
| [2][0] | EXECUTE_FAILED |
| [3][0] | 5 |
| [4][0] | EXECUTE_FAILED |
| [4][1] | EXECUTE_FAILED |
| [5][0] | 1 |
UpdateManyException.getHeteroBatchSQLExceptionArray() によって戻される配列を以下の表にリストします。
| 配列指標 | 値 |
|---|---|
| [0][0] | null |
| [0][1] | null |
| [0][2] | null |
| [1][0] | null |
| [2][0] | 以下の情報が含まれる HeteroBatchSQLException。
com.ibm.db2.jcc.am.SqlIntegrityConstraintViolationException: ステートメント #3 内のバッチ・エレメント #1 に関するエラー: INSERT ステートメント内または UPDATE ステートメント内、あるいは DELETE ステートメントによる外部キー更新内で、1 つ以上の値が無効です。これは、"1" によって識別される基本キー、ユニーク制約、またはユニーク索引の制約により、表 "DB2ADMIN.G" が索引キーの重複する値を持つことができないからです。 |
| [3][0] | null |
| [4][0] | 以下の情報が含まれる HeteroBatchSQLException。
com.ibm.db2.jcc.am.SqlIntegrityConstraintViolationException: ステートメント #5 内のバッチ・エレメント #1 に関するエラー: INSERT ステートメント内または UPDATE ステートメント内、あるいは DELETE ステートメントによる外部キー更新内で、1 つ以上の値が無効です。これは、"1" によって識別される基本キー、ユニーク制約、またはユニーク索引の制約により、表 "DB2ADMIN.H" が索引キーの重複する値を持つことができないからです。 |
| [4][1] | 以下の情報が含まれる HeteroBatchSQLException。
com.ibm.db2.jcc.am.SqlIntegrityConstraintViolationException: ステートメント #5 内のバッチ・エレメント #2 に関するエラー: INSERT ステートメント内または UPDATE ステートメント内、あるいは DELETE ステートメントによる外部キー更新内で、1 つ以上の値が無効です。これは、"1" によって識別される基本キー、ユニーク制約、またはユニーク索引の制約により、表 "DB2ADMIN.H" が索引キーの重複する値を持つことができないからです。 |
| [5][0] | null |
行固有でない SQLException がないので、UpdateManyException.getBatchNonSpecificExceptions() は null を戻します。
一緒にチェーニングされた HeteroBatchSQLException を取得するには、UpdateManyException.getCause() メソッドと UpdateManyException.getNextException() メソッドを呼び出します。 getCause() の呼び出しと getNextException() の呼び出しによって戻される HeteroBatchSQLException を以下にリストします。
com.ibm.db2.jcc.am.BatchUpdateException: [jcc][102][10040][3.63.46] バッチが失敗しました。 バッチは実行依頼されましたが、バッチの個別メンバーのいずれかで 1 つ以上の例外が発生しました。 getNextException() を使用して、バッチ処理された特定のエレメントの例外を取得してください。
com.ibm.db2.jcc.am.SqlIntegrityConstraintViolationException: ステートメント #3 内のバッチ・エレメント #1 に関するエラー: INSERT ステートメント内または UPDATE ステートメント内、あるいは DELETE ステートメントによる外部キー更新内で、1 つ以上の値が無効です。これは、"1" によって識別される基本キー、ユニーク制約、またはユニーク索引の制約により、表 "DB2ADMIN.G" が索引キーの重複する値を持つことができないからです。
com.ibm.db2.jcc.am.SqlIntegrityConstraintViolationException: ステートメント #5 内のバッチ・エレメント #1 に関するエラー: INSERT ステートメント内または UPDATE ステートメント内、あるいは DELETE ステートメントによる外部キー更新内で、1 つ以上の値が無効です。これは、"1" によって識別される基本キー、ユニーク制約、またはユニーク索引の制約により、表 "DB2ADMIN.H" が索引キーの重複する値を持つことができないからです。
com.ibm.db2.jcc.am.SqlIntegrityConstraintViolationException: ステートメント #5 内のバッチ・エレメント #2 に関するエラー: INSERT ステートメント内または UPDATE ステートメント内、あるいは DELETE ステートメントによる外部キー更新内で、1 つ以上の値が無効です。これは、"1" によって識別される基本キー、ユニーク制約、またはユニーク索引の制約により、表 "DB2ADMIN.H" が索引キーの重複する値を持つことができないからです。
null