Tengo una Function en Postgres que me retorna dos Cursores pero no se como recuperar los valores que me devuelven desde la aplicacion en java.
Alguien me podria ayudar con eso????
| |||
![]() Tengo una Function en Postgres que me retorna dos Cursores pero no se como recuperar los valores que me devuelven desde la aplicacion en java. Alguien me podria ayudar con eso???? |
| |||
Re: Problemas con JDBC Lo que tengo es esta funcion: CREATE FUNCTION _getdatos_persona_cursor (id1 integer, id2 integer) RETURNS SETOF refcursor AS declare ref1 refcursor; ref2 refcursor; begin open ref1 for select * from persona where persona.id = $1; return next ref1; open ref2 for select * from persona where persona.id = $2; return next ref2; return; end Ahora en la aplicacion java cuando quiero obtener los valores de ref1 y ref2 y lo que me retorna es: org.postgresql.jdbc3.Jdbc3ResultSet@125844f org.postgresql.jdbc3.Jdbc3ResultSet@49d67c CrearConeccion(); con.setAutoCommit(false); pst = con.prepareStatement("Select * from _getdatos_persona_cursor(?,?)", ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); pst.setObject(1, id1); pst.setObject(2, id2); pst.execute(); rs = pst.getResultSet(); while(rs.next()){ System.out.println(rs.getObject(1)); } CerrarConeccion(); Me pudieran decir que hago mal aqui..... |
| |||
Re: Problemas con JDBC Esto es lo que haces mal: System.out.println(rs.getObject(1)); Estan mostrando por pantalla un objeto. Accede a los campos del registro de la forma rs.getString(1), etc.. esto es un problema de java no de postgre y tampoco es un probema de JDBC.... Un saludo |
| |||
Re: Problemas con JDBC Si mira seyko, eso era uno de los problemas pero lo que me devuelve la funcion son 2 cursores por lo que System.out.println(rs.getString(1)); lo que me imprime es: <unnamed portal 1> <unnamed portal 2> que son los nombre de los cursores, ahora lo que no se es como capturar cada uno de estos cursores y mostrar lo que ellos tienen. |
| |||
Re: Problemas con JDBC Ya Seyko, trabajo completo. gracias era eso mismo, lo probé y lo hizo bien. Lo que no se es porque tengo que usar: con.prepareStatement("Select * from _getdatos_persona_cursor(?,?)") para que me devuelva un ResultSet. y no un prepareCall. Si uso este ultimo me devuelve null. |