Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Die ExecuteBatch-Methode gibt ein Array mit dem Wert -2 in Java zurück

Die jdbc-Spezifikation sagt Folgendes über den Rückgabecode von Batch-Updates:

■ 0 oder größer – der Befehl wurde erfolgreich verarbeitet und der Wert ist ein Aktualisierungszähler, der die Anzahl der Zeilen in der Datenbank angibt, die von der Ausführung des Befehls betroffen waren

■ Statement.SUCCESS_NO_INFO — Der Befehl wurde erfolgreich verarbeitet, aber die Anzahl der betroffenen Zeilen ist unbekannt

Statement.SUCCESS_NO_INFO ist als -2 definiert, also sagt Ihr Ergebnis, dass alles gut funktioniert hat, aber Sie erhalten keine Informationen über die Anzahl der aktualisierten Spalten.

Die Oracle-Dokumentation besagt:

•Bei einem vorbereiteten Anweisungsstapel ist es nicht möglich, die Anzahl der Zeilen zu kennen, die in der Datenbank von jeder einzelnen Anweisung im Stapel betroffen sind. Daher haben alle Array-Elemente den Wert -2. Gemäß der JDBC 2.0-Spezifikation gibt ein Wert von -2 an, dass die Operation erfolgreich war, aber die Anzahl der betroffenen Zeilen unbekannt ist.

•Für einen generischen Anweisungsstapel enthält das Array die tatsächlichen Aktualisierungszähler, die die Anzahl der Zeilen angeben, die von jeder Operation betroffen sind. Die tatsächliche Aktualisierungsanzahl kann nur im Fall von generischen Anweisungen in der Oracle-Implementierung von Standard-Batching bereitgestellt werden.

•Für einen aufrufbaren Anweisungsstapel gibt der Server immer den Wert 1 als Aktualisierungszähler zurück, unabhängig von der Anzahl der Zeilen, die von jeder Operation betroffen sind.

Wenn Sie also die Aktualisierungszähler benötigen, können Sie PreparedStatement nicht verwenden s, müssen aber auf das einfache Statement zurückgreifen s.