BUG #12681: Cannot Read Refcursor from JAVA - Mailing list pgsql-bugs
From | ousema2003@yahoo.fr |
---|---|
Subject | BUG #12681: Cannot Read Refcursor from JAVA |
Date | |
Msg-id | 20150127135904.19615.32001@wrigleys.postgresql.org Whole thread Raw |
List | pgsql-bugs |
The following bug has been logged on the website: Bug reference: 12681 Logged by: Cannot Read Refcursor from JAVA Email address: ousema2003@yahoo.fr PostgreSQL version: 9.2.0 Operating system: linux x86 64 / centos 5.9 Description: Hi i created fucntion in postgresql ... returning refcursor. CREATE OR REPLACE FUNCTION popa() RETURNs refcursor as $$ declare c refcursor; BEGIN OPEN c FOR SELECT * FROM contract ; return c; END; $$ LANGUAGE 'plpgsql'; and later i developed java program to read this ref cursor : import java.net.URI; import java.net.URISyntaxException; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Struct; import java.sql.Timestamp; import java.sql.Types; import java.util.Date; import com.impossibl.postgres.api.jdbc.PGConnection; import com.impossibl.postgres.datetime.instants.Instant.Type; import com.impossibl.postgres.jdbc.PGCallableStatement; import com.impossibl.postgres.jdbc.PGDataSource; import com.impossibl.postgres.types.ArrayType; public class test2 { public static PGDataSource datasource = null; public static PGConnection connection = null; public static ResultSet rs1 = null; public static ResultSet rs2 = null; public static void main(String args[]) { datasource = createDataSource(); connection = getPGConnection(datasource); displayRecsRefCursorOut(); } public static void displayRecsRefCursorOut() { try { connection.setAutoCommit(false); CallableStatement cs = null; cs = connection.prepareCall("{ ? = call popa()}"); cs.registerOutParameter(1, Types.OTHER); cs.execute(); ResultSet rs = (ResultSet) cs.getObject(1); while (rs.next()) { System.out.println(rs.getString(1)); } } catch (SQLException e) { e.printStackTrace(); } } public static PGDataSource createDataSource() { PGDataSource pgd = new PGDataSource(); try { pgd.setHost("xx.xx.xx.xx"); pgd.setPort(5432); pgd.setDatabase("oussdb"); pgd.setUser("ouss"); pgd.setPassword("xxx"); } catch (Exception e) { e.printStackTrace(); } return pgd; } public static PGConnection getPGConnection(PGDataSource pgdatasource) { PGConnection pgconnection = null; try { pgconnection = (PGConnection) pgdatasource.getConnection(); } catch (SQLException e) { e.printStackTrace(); } return pgconnection; } } but i get this error : Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.sql.ResultSet at test2.displayRecsRefCursorOut(test2.java:41) at test2.main(test2.java:30) and i failed reading the refcursor.. could you please advice how can i deal with this err ...
pgsql-bugs by date: