Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/02/2006, 06:20
bernadelpradoclaves
 
Fecha de Ingreso: febrero-2006
Mensajes: 20
Antigüedad: 18 años, 9 meses
Puntos: 1
Cómo pasar un array como parámetro a un procedimiento almacenado

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.