Error al llamar funcion oracle en java

3,315 views
Skip to first unread message

Carola Neira Lutz

unread,
Apr 21, 2009, 4:20:51 PM4/21/09
to jug.cl
Holas

alguien me puede ayudar...al llamar una función oracle que devuelve
una tabla pl-sql , aparece la siguiente excepcion
java.sql.SQLException: Falta el parametro IN o OUT en el indice::1.

lo he probado a traves de oracle y la función devuelve datos, el
problema es leerlo desde java.

gracias....:=)

Gabriel Acevedo H.

unread,
Apr 21, 2009, 4:41:04 PM4/21/09
to ju...@googlegroups.com
2009/4/21 Víctor Cárcamo <vcarc...@gmail.com>:
>
> Estimados aproposito de Java y Oracle; que piensan de la compra de Sun
> por parte de Oracle,  yo por lo menos me impacto ver hoy en la pagina
> de Sun un rotundo Titulo Central que decía "ORACLE TO BUY SUN". Que
> piensan ustedes ¿Sera para mejor?.
> Dejo abierto el debate...

Deberías iniciar otro hilo para esa discusión.

¡Saludos!

--
-------------------------------------------
Gabriel Acevedo H.
http://faltanideas.com/
Usuario Linux #281105

Roberto Leiva M. (Lista)

unread,
Apr 21, 2009, 4:40:30 PM4/21/09
to ju...@googlegroups.com
Carola Neira Lutz escribió:

y cual seria el codigo con que realizas la llamada ( a traves de CallableStatement ? )


por ejemplo este es un trozo de codigo que realiza una llamada a un Procedimiento que retorna un cursor.

[...]

CallableStatement stmt = cnSchemaQry.prepareCall("begin ? := tot_lcompra(1,1,:F_INI,:F_FIN); end;");
stmt.registerOutParameter(1, oracle.jdbc.driver.OracleTypes.CURSOR);
stmt.execute();
ResultSet rs = (ResultSet)stmt.getObject(1);

[...]


link de ejemplos:
http://prashantjalasutram.blogspot.com/2008/07/how-to-call-java-oracle-functions-from.html
http://www.exampledepot.com/egs/java.sql/CallFunction.html

atte.
--
Roberto Leiva M.
Santiago - Chile

Jesus C.

unread,
Apr 21, 2009, 4:42:14 PM4/21/09
to ju...@googlegroups.com
seria bueno que envies tus codigo para checkearlo y tambien la traza completa que genera la excepcion :)

--

Saludos,

Jesus C.

Nicolas A. Echeverria O.

unread,
Apr 21, 2009, 4:42:56 PM4/21/09
to ju...@googlegroups.com
puedes enviar la clase quellama al procedimiento??
y el porcedimiento para verlo mejor

Mauricio Gomez

unread,
Apr 21, 2009, 4:44:52 PM4/21/09
to ju...@googlegroups.com
La funcion devuelve un cursor como parametro OUT?

podrías mandar el encabezado de la funcion?


mauro


El 21 de abril de 2009 16:20, Carola Neira Lutz <carola...@gmail.com> escribió:



--
El que sabe, sabe. Y el que no sabe, TRABAJA. - El Jefe

Carola Neira Lutz

unread,
Apr 21, 2009, 4:54:30 PM4/21/09
to jug.cl
el codigo es este...


java.sql.CallableStatement pas;
try {

pas = con.prepareCall("{ ? = call devuelve_clientes(?)}");



pas.setFetchSize(100);



pas.registerOutParameter
(1,oracle.jdbc.driver.OracleTypes.PLSQL_INDEX_TABLE);



pas.setString(2, estado);



pas.execute();



ResultSet tabla = (ResultSet) pas.getObject(1);



while (tabla.next()) {

Usuarios user1 = new Usuarios();

user1.setRut(tabla.getString("rut"));

user1.setDv(tabla.getString("dv"));

lista.add(user1);

}



tabla.close();

pas.close();



}

Mauricio Gomez

unread,
Apr 21, 2009, 5:15:37 PM4/21/09
to ju...@googlegroups.com
Yo tambien uso oracle.jdbc.driver.
OracleTypes.CURSOR en vez de oracle.jdbc.driver.
OracleTypes.PLSQL_INDEX_TABLE.

mauro

Carola Neira Lutz

unread,
Apr 22, 2009, 10:01:46 AM4/22/09
to ju...@googlegroups.com
amm no me funciona, porque lo que se devuelve en el procedimiento almacenado es una tabla,
 
alguien ha hecho eso?
 
gracias :)

Cesar A. Ogalde H.

unread,
Apr 22, 2009, 10:04:23 AM4/22/09
to ju...@googlegroups.com
Si es un select lo puedes recibir como resulet o me equivoco ? Alguien que confirme hace mucho tiempo que no veo procedimientos.

Saludos

Enviado desde mi equipo BlackBerry® de Claro


From: "Carola Neira Lutz"
Date: Wed, 22 Apr 2009 10:01:46 -0400
To: <ju...@googlegroups.com>

Luis Arce

unread,
Apr 22, 2009, 2:09:18 PM4/22/09
to ju...@googlegroups.com
una consulta  porque retornas un index y no un String o int, digamos para saber si te funciono?

pas.registerOutParameter
(1,oracle.jdbc.driver.OracleTypes.PLSQL_INDEX_TABLE);

porque deberia ser algo asi como
pas.registerOutParameter(2,java.sql.Types.FLOAT);

Si puedes manda la definición del procedimiento

saludos.




To: ju...@googlegroups.com
Subject: Re: Error al llamar funcion oracle en java
From: cesar....@gmail.com
Date: Wed, 22 Apr 2009 14:04:23 +0000


Si es un select lo puedes recibir como resulet o me equivoco ? Alguien que confirme hace mucho tiempo que no veo procedimientos.

SaludosEnviado desde mi equipo BlackBerry® de Claro
<BR






El nuevo Messenger es más personalizable que nunca ¡Conócelo y consigue el tuyo!

hugo martinez

unread,
Apr 27, 2009, 11:15:39 AM4/27/09
to ju...@googlegroups.com
Me parece que esta definicion esta mal:
 
? = call devuelve_clientes(?)}

Ya que no deberias colocar el primer "?", por que no es parametros de entrada. y el parametro de salida lo registras por código.

Espero te ayude.

Luis Arce

unread,
Apr 27, 2009, 12:17:50 PM4/27/09
to ju...@googlegroups.com
y yo respondiendo por el parametro de retorno :D
no me habia fijado en el detalle jaja


Date: Mon, 27 Apr 2009 11:15:39 -0400

Subject: Re: Error al llamar funcion oracle en java

Hay un nuevo Messenger que tienes que conocer... ¡Mira las novedades!
Reply all
Reply to author
Forward
Message has been deleted
0 new messages