Refcursor do Postgres + EclipseLink

2 respostas
marciosouzajunior

Tenho uma função no postgres que me retorna um cursor. Queria saber se tem alguma forma de
ler esse cursor utilizando o EclipseLink.

2 Respostas

Hebert_Coelho

Por que um cursos e não os resultados diretamente? O.o

marciosouzajunior

jakefrog, estou utilizando uma função pra gerar uma query que monta uma crosstab.
Sei que no postgres tem uma extension (tablefunc) que tem uma função parecida, mas
esta que estou utilizando gera as colunas dinamicamente.
Na verdade eu copiei a função deste site:
http://okbob.blogspot.com.br/2008/08/using-cursors-for-generating-cross.html
E fiz algumas modificações pra funcionar como eu preciso. Mas respondendo a sua pergunta,
segundo o autor da função:

Até o momento, estou resolvendo o problema da seguinte forma:

// Retorna a conexão
            myEntityManager.getTransaction().begin();
            Connection connection = myEntityManager.unwrap(java.sql.Connection.class);

            // Prepara a chamada
            CallableStatement stm = connection.prepareCall("{ ? = call funcao_crosstab(?, ?) }");
            stm.registerOutParameter(1, Types.OTHER);
            stm.setString(2, myParam1);
            stm.setString(3, myParam2);
            stm.execute();

            ResultSet results = (ResultSet) stm.getObject(1);

            // Códigos maneiros envolvendo o resultset aqui...

            // Finaliza
            results.close();
            stm.close();
            connection.setAutoCommit(false);
            myEntityManager.getTransaction().commit();
Criado 26 de julho de 2012
Ultima resposta 26 de jul. de 2012
Respostas 2
Participantes 2