Hola,
Necesito insertar en una tabla de base de datos 5000 registros. Lo que estoy haciendo es llamar desde un servlet a un procedimento almacenado en una bd oracle, pasándole a este procedimiento los valores que debe insertar en la tabla.
Servlet:
for (int fila = 0; fila < 5000; fila++) {
CallableStatement cs = conn.prepareCall("{ call proInsertaPrueba ( ?,?,?,? ) }");
cs.setInt(1, 999);
cs.setInt(2, fila + 1);
cs.setString(3, “Valor”);
cs.setDouble(4, 4759.66);
ResultSet rsP = cs.executeQuery();
rsP.close();
cs.close();
} // end for
Procedimiento almacenado:
create procedure proInsertaPrueba (numCodigo IN NUMBER, numFila IN NUMBER, varValor IN VARCHAR2, numCantidad IN NUMBER)
IS
BEGIN
INSERT INTO PRUEBA_INSERT (Codigo, Fila, Valor, Cantidad)
VALUES (numCodigo, numFila , varValor, numCantidad);
COMMIT;
END;
/
El problema está en que tengo que llamar al procedimiento 5000 veces, ya que este procedimiento realiza una inserción en una tabla.
¿ Existe alguna manera de pasar la procedimiento almacenado un array ?
De tal forma que sólo haya que llamar al procedimiento un vez pasándole como parámetro un array de 5000 registros y este procedimiento almacenado se encargará de leer el array e realizar la inserciones en la tabla. Además de esta forma sólo hay un acceso a la base de datos.
Gracias de antemano.