sql >> Base de Datos >  >> RDS >> Oracle

El método ExecuteBatch devuelve una matriz de valor -2 en Java

jdbc-spec dice lo siguiente sobre el código de retorno de las actualizaciones por lotes:

■ 0 o mayor:el comando se procesó correctamente y el valor es un recuento de actualizaciones que indica el número de filas de la base de datos que se vieron afectadas por la ejecución del comando. Capítulo 14 Actualizaciones por lotes 121

■ Statement.SUCCESS_NO_INFO:el comando se procesó correctamente, pero se desconoce el número de filas afectadas

Statement.SUCCESS_NO_INFO se define como -2, por lo que su resultado dice que todo funcionó bien, pero no obtendrá información sobre la cantidad de columnas actualizadas.

La documentación de Oracle dice:

•Para un lote de declaraciones preparadas, no es posible saber el número de filas afectadas en la base de datos por cada declaración individual en el lote. Por lo tanto, todos los elementos de la matriz tienen un valor de -2. De acuerdo con la especificación JDBC 2.0, un valor de -2 indica que la operación fue exitosa pero se desconoce el número de filas afectadas.

•Para un lote de extracto genérico, la matriz contiene los recuentos de actualización reales que indican el número de filas afectadas por cada operación. Los recuentos de actualizaciones reales solo se pueden proporcionar en el caso de declaraciones genéricas en la implementación de procesamiento por lotes estándar de Oracle.

•Para un lote de declaraciones invocables, el servidor siempre devuelve el valor 1 como el recuento de actualizaciones, independientemente del número de filas afectadas por cada operación.

Entonces parece que si necesita los recuentos de actualizaciones, no puede usar PreparedStatement s pero tiene que recurrir a la simple Statement s.