PDA

Ver la Versión Completa : Insertar un array en un procedimiento de Oracle con JDBC


samuvk
17-05-2004, 16:33:34
Hola de nuevo y buenas tardes:

Como habreis podido observar por mis problemas estoy trabajando con JDBC y tengo
bastantes incovenientes con el tema de los tipos de datos que me traen loco.

Tengo un pequeño problema. Necesito insertar un array en un procedimiento de
Oracle a través del JDBC. He realizado el siguiente código:


String aString="hola";
//Creo el array
String [] tabla= new String[100];

//Introduzco 2 valores en el array
tabla[1]="palabra1";
tabla[2]="palabra2";

CallableStatement cstmt = null;
try
{
//Creo la llamada al procedimiento y le paso los 2 parametros de entrada en (?,?)
cstmt = con.prepareCall("begin usuario.paquete.procedimiento (?,?); end;");
//Inserto la palabra hola en el primer parametro de entrada
cstmt.setString(1, aString);
//Ahora quiero introducir el array Tabla en el segundo parametro de entrada el array
//pero si lo pongo asi no cuela por que no existe setArray
//cstmt.setArray(2, tabla);
//Con lo cual lo intento de la siguiente forma pero me da el siguiente error: Tipo de
// columna no valido
cstmt.setObject(2, tabla);
cstmt.execute();
Catch (SQLException ejecucion)
{System.out.println("Error: " + ejecucion.getMessage());}


La llamada al paquete siguiente desde oracle funciona correctamente:

BEGIN
v_tablain(1) := 'palabra1';
v_tablain(2) := 'palabra2';
v_numfilas := 2;
paquete.porcedimiento ('palabra0',v_tablain);
END;
/


Me gustaria poder realizar la misma llamada desde Java con JDBC, pero no entiendo por que no
me funciona tal y como lo he hecho.


Muchas Gracias tanto si podeis como sino ayudarme.

santana
17-05-2004, 17:49:19
Esto te va a interesar.

Echale un vistazo (http://www.inetsoftware.de/English/Produkte/JDBC_Overview/oracle_feature/index.htm).

Un saludo.

santana
17-05-2004, 17:59:48
Y esto lo tienes en java.sun.com (http://java.sun.com/j2se/1.4.2/docs/api/java/sql/CallableStatement.html)
Y esto tambien. (http://java.sun.com/j2se/1.4.2/docs/api/java/sql/PreparedStatement.html)

Ahí es donde más información podrás encontrar. Yo siempre la tengo a mano ;).