sql >> Database teknologi >  >> RDS >> Oracle

ExecuteBatch-metoden returnerer array med værdi -2 i java

jdbc-spec'en har følgende at sige om returkoden for batch-opdateringer:

■ 0 eller højere — kommandoen blev behandlet med succes, og værdien er en opdateringstælling, der angiver antallet af rækker i databasen, der blev påvirket af kommandoens udførelse. Kapitel 14 Batchopdateringer 121

■ Statement.SUCCESS_NO_INFO — kommandoen blev behandlet med succes, men antallet af berørte rækker er ukendt

Statement.SUCCESS_NO_INFO er defineret som værende -2, så dit resultat siger, at alt fungerede fint, men du vil ikke få information om antallet af opdaterede kolonner.

Oracle-dokumentationen siger:

•For en udarbejdet opgørelsesbatch er det ikke muligt at kende antallet af rækker, der påvirkes i databasen af ​​hver enkelt opgørelse i batchen. Derfor har alle array-elementer en værdi på -2. Ifølge JDBC 2.0-specifikationen indikerer en værdi på -2, at operationen var vellykket, men antallet af berørte rækker er ukendt.

•For en generisk erklæringsbatch indeholder arrayet de faktiske opdateringstællinger, der angiver antallet af rækker, der er påvirket af hver operation. De faktiske opdateringsantal kan kun angives i tilfælde af generiske erklæringer i Oracle-implementeringen af ​​standard batching.

•For en kaldbar sætningsbatch returnerer serveren altid værdien 1 som opdateringsantal, uanset de antal rækker, der er påvirket af hver operation.

Så det ser ud til, at hvis du har brug for opdateringstallet, kan du ikke bruge PreparedStatement s, men er nødt til at falde tilbage til almindelig Statement s.



  1. Hentning af returværdien fra JDBC MSSQL

  2. Hvordan får man den første dag i hver tilsvarende måned i mysql?

  3. Vælg række med seneste dato pr. bruger

  4. Top ti grunde til at migrere fra Oracle til PostgreSQL