Sie können ein zweidimensionales int-Array abrufen, das den Aktualisierungszähler für die heterogene Aktualisierung im Stapelbetrieb enthält, indem Sie die Methode UpdateManyException.getUpdateCounts() aufrufen. Das Array enthält den Stand des Aktualisierungszählers, so wie er bei einem erfolgreichen Abschluss des Stapelbetriebs zurückgegeben würde.
Die Werte im Array sind entweder Aktualisierungszähler oder die Java™-Fehlermeldung EXECUTE_FAILED. Mithilfe der Informationen im Array können Sie ermitteln, wo die Fehler aufgetreten sind.
Der Wert der ersten Arraydimension ist der Offset der Aktualisierungsoperation innerhalb der heterogenen Aktualisierung im Stapelbetrieb.
Die zweite Dimension des Arrays ist der Offset der Datenzeile, die an die Methode UpdateMany() übergeben wird, die die SQL-Ausnahmebedingung verursacht hat.
com.ibm.pdq.runtime.exception.UpdateManyException: [pdq][10363][3.200.401] Mindestens eine Ausnahmebedingung ist aufgetreten, als pureQuery den Stapel heterogener SQL-Anweisungen ausführte.
Sie rufen die Methode getHeterogeneousUpdateCounts () auf, damit ein zweidimensionales int-Array von Aktualisierungszählern zurückgegeben wird, mit dessen Hilfe die fehlgeschlagenen SQL-Anweisungen ermittelt werden können. In der folgenden Tabelle ist der Arrayinhalt aufgelistet:
| Arrayindex | Anzahl1 |
|---|---|
| [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 |
In der folgenden Tabelle ist das von UpdateManyException.getHeteroBatchSQLExceptionArray() zurückgegebene Array aufgelistet:
| Arrayindex | Wert |
|---|---|
| [0][0] | null |
| [0][1] | null |
| [0][2] | null |
| [1][0] | null |
| [2][0] | HeteroBatchSQLException, die die folgenden Informationen
enthält: com.ibm.db2.jcc.am.SqlIntegrityConstraintViolationException: Fehler für Stapelelement #1: in stmt #3: Mindestens ein Wert in der Anweisung INSERT, der Anweisung UPDATE oder in der von einer DELETE-Anweisung verursachten Fremdschlüsselaktualisierung ist ungültig, weil der Primärschlüssel, die eindeutige Integritätsbedingung oder der mit "1" gekennzeichnete eindeutige Index nicht zulässt, dass die Tabelle "DB2ADMIN.G" doppelte Werte für den Indexschlüssel enthält. |
| [3][0] | null |
| [4][0] | HeteroBatchSQLException, die die folgenden Informationen
enthält: com.ibm.db2.jcc.am.SqlIntegrityConstraintViolationException: Fehler für Stapelelement #1: in stmt #5: Mindestens ein Wert in der Anweisung INSERT, der Anweisung UPDATE oder in der von einer DELETE-Anweisung verursachten Fremdschlüsselaktualisierung ist ungültig, weil der Primärschlüssel, die eindeutige Integritätsbedingung oder der mit "1" gekennzeichnete eindeutige Index nicht zulässt, dass die Tabelle "DB2ADMIN.H" doppelte Werte für den Indexschlüssel enthält. |
| [4][1] | HeteroBatchSQLException, die die folgenden Informationen
enthält: com.ibm.db2.jcc.am.SqlIntegrityConstraintViolationException: Fehler für Stapelelement #2: in stmt #5: Mindestens ein Wert in der Anweisung INSERT, der Anweisung UPDATE oder in der von einer DELETE-Anweisung verursachten Fremdschlüsselaktualisierung ist ungültig, weil der Primärschlüssel, die eindeutige Integritätsbedingung oder der mit "1" gekennzeichnete eindeutige Index nicht zulässt, dass die Tabelle "DB2ADMIN.H" doppelte Werte für den Indexschlüssel enthält. |
| [5][0] | null |
UpdateManyException.getBatchNonSpecificExceptions() gibt null zurück, weil keine nicht zeilenspezifischen SQL-Ausnahmebedingungen vorhanden sind.
Sie können die Methode UpdateManyException.getCause() und die Methode UpdateManyException.getNextException() aufrufen, um die verketteten HeteroBatchSQLExceptions abzurufen. Die folgende Liste enthält die HeteroBatchSQLExceptions, die durch einen Aufruf von getCause() und getNextException() zurückgegeben werden.
com.ibm.db2.jcc.am.BatchUpdateException: [jcc][102][10040][3.63.46] Batch fehlgeschlagen. Der Batch wurde übergeben, aber für ein einzelnes Batch-Member ist mindestens eine Ausnahmebedingung aufgetreten. Verwenden Sie getNextException(), um die Ausnahmebedingungen für bestimmte stapelorientierte Elemente abzurufen.
com.ibm.db2.jcc.am.SqlIntegrityConstraintViolationException: Fehler für Stapelelement #1: in stmt #3: Mindestens ein Wert in der Anweisung INSERT, der Anweisung UPDATE oder in der von einer DELETE-Anweisung verursachten Fremdschlüsselaktualisierung ist ungültig, weil der Primärschlüssel, die eindeutige Integritätsbedingung oder der mit "1" gekennzeichnete eindeutige Index nicht zulässt, dass die Tabelle "DB2ADMIN.G" doppelte Werte für den Indexschlüssel enthält.
com.ibm.db2.jcc.am.SqlIntegrityConstraintViolationException: Fehler für Stapelelement #1: in stmt #5: Mindestens ein Wert in der Anweisung INSERT, der Anweisung UPDATE oder in der von einer DELETE-Anweisung verursachten Fremdschlüsselaktualisierung ist ungültig, weil der Primärschlüssel, die eindeutige Integritätsbedingung oder der mit "1" gekennzeichnete eindeutige Index nicht zulässt, dass die Tabelle "DB2ADMIN.H" doppelte Werte für den Indexschlüssel enthält.
com.ibm.db2.jcc.am.SqlIntegrityConstraintViolationException: Fehler für Stapelelement #2: in stmt #5: Mindestens ein Wert in der Anweisung INSERT, der Anweisung UPDATE oder in der von einer DELETE-Anweisung verursachten Fremdschlüsselaktualisierung ist ungültig, weil der Primärschlüssel, die eindeutige Integritätsbedingung oder der mit "1" gekennzeichnete eindeutige Index nicht zulässt, dass die Tabelle "DB2ADMIN.H" doppelte Werte für den Indexschlüssel enthält.
null