sql >> Database >  >> RDS >> Oracle

ExecuteBatch-methode retourneert array met waarde -2 in java

De jdbc-spec heeft het volgende te zeggen over de retourcode van batch-updates:

■ 0 of hoger — de opdracht is met succes verwerkt en de waarde is een update-telling die het aantal rijen in de database aangeeft dat werd beïnvloed door de uitvoering van de opdrachtHoofdstuk 14 Batch-updates 121

■ Statement.SUCCESS_NO_INFO — de opdracht is met succes verwerkt, maar het aantal betrokken rijen is onbekend

Statement.SUCCESS_NO_INFO is gedefinieerd als -2, dus uw resultaat zegt dat alles goed werkte, maar u krijgt geen informatie over het aantal bijgewerkte kolommen.

In de orakeldocumentatie staat:

•Voor een voorbereide batch met afschriften is het niet mogelijk om het aantal rijen in de database te kennen dat door elk afzonderlijk afschrift in de batch wordt beïnvloed. Daarom hebben alle array-elementen een waarde van -2. Volgens de JDBC 2.0-specificatie geeft een waarde van -2 aan dat de bewerking is geslaagd, maar het aantal betrokken rijen is onbekend.

•Voor een generieke instructiebatch bevat de array de werkelijke updatetellingen die het aantal rijen aangeven dat door elke bewerking wordt beïnvloed. De werkelijke updatetellingen kunnen alleen worden gegeven in het geval van generieke instructies in de Oracle-implementatie van standaard batching.

•Voor een oproepbare instructiebatch retourneert de server altijd de waarde 1 als het aantal updates, ongeacht het aantal rijen dat door elke bewerking wordt beïnvloed.

Dus het lijkt erop dat als je de update-counts nodig hebt, je PreparedStatement niet kunt gebruiken s maar moet terugvallen op de gewone Statement v.



  1. Essentials en gebruik van NOLOCK-hint in SQL Server

  2. SQLite-voorbeelddatabase

  3. TIMEDIFF() Voorbeelden – MySQL

  4. PostgreSQL gebruikt geen gedeeltelijke index