import java.sql.*; public class MultRefCursor { public static void main(String args[]) throws Exception { Class.forName("org.postgresql.Driver"); Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/jurka","jurka",""); Statement stmt = conn.createStatement(); stmt.execute("CREATE OR REPLACE FUNCTION multcurfunc() RETURNS SETOF refcursor AS 'DECLARE ref1 refcursor; ref2 refcursor; BEGIN OPEN ref1 FOR SELECT 1; RETURN NEXT ref1; OPEN ref2 FOR SELECT 2; RETURN next ref2; RETURN; END;' LANGUAGE plpgsql"); stmt.close(); conn.setAutoCommit(false); PreparedStatement ps = conn.prepareStatement("SELECT * FROM multcurfunc()"); ResultSet rs = ps.executeQuery(); while (rs.next()) { System.out.println(rs.getString(1)); ResultSet rs2 = (ResultSet)rs.getObject(1); while (rs2.next()) { System.out.println(rs2.getInt(1)); } rs2.close(); } rs.close(); ps.close(); conn.close(); } }