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.
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.