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

Il metodo ExecuteBatch restituisce un array di valore -2 in java

Il jdbc-spec ha quanto segue da dire sul codice di ritorno degli aggiornamenti batch:

■ 0 o superiore:il comando è stato elaborato correttamente e il valore è un conteggio degli aggiornamenti che indica il numero di righe nel database interessate dall'esecuzione del comando Capitolo 14 Aggiornamenti batch 121

■ Statement.SUCCESS_NO_INFO:il comando è stato elaborato correttamente, ma il numero di righe interessate è sconosciuto

Statement.SUCCESS_NO_INFO è definito come -2, quindi il tuo risultato dice che tutto ha funzionato bene, ma non otterrai informazioni sul numero di colonne aggiornate.

La documentazione dell'oracolo afferma:

•Per un batch di istruzioni preparato, non è possibile conoscere il numero di righe interessate nel database da ogni singola istruzione nel batch. Pertanto, tutti gli elementi dell'array hanno un valore di -2. Secondo la specifica JDBC 2.0, un valore di -2 indica che l'operazione è riuscita ma il numero di righe interessate è sconosciuto.

•Per un batch di istruzioni generiche, la matrice contiene i conteggi di aggiornamento effettivi che indicano il numero di righe interessate da ciascuna operazione. I conteggi effettivi degli aggiornamenti possono essere forniti solo nel caso di istruzioni generiche nell'implementazione Oracle del batching standard.

•Per un batch di istruzioni richiamabili, il server restituisce sempre il valore 1 come conteggio degli aggiornamenti, indipendentemente dal numero di righe interessate da ciascuna operazione.

Quindi sembra che se hai bisogno dei conteggi degli aggiornamenti non puoi usare PreparedStatement s ma devono tornare alla semplice Statement s.