This code work for me : Connection db = DriverManager.getConnection(url,user,passwd); PreparedStatement st = db.prepareStatement("begin;declare c1 cursor for select * from a"); st.execute(); st = db.prepareStatement("fetch 100 in c1"); ResultSet rs = st.executeQuery(); //rs.setFetchSize(100); while (rs.next() ) { s = rs.getString(1); System.out.println(s); } st = db.prepareStatement("commit"); st.execute(); st.close(); db.close();
regards Haris Peco On Wednesday 16 October 2002 01:55 pm, Dave Tenny wrote: > > > > > To work > > > > > around this you can use explicit cursors (see the DECLARE CURSOR, > > > > > FETCH, and MOVE sql commands for postgres). > > I'm unable to get this to work using the default distribution JDBC driver. > (7.2). Here's a code snippet > > conn.setAutoCommit(false) ; > stmt.execute("BEGIN") ; > stmt.execute("DECLARE mysursor CURSOR FOR SELECT icol FROM mtable") ; > ResultSet rs = null ; > if (stmt.execute("FETCH 10000 IN mycursor")) > rs = stmt.getResultSet() ; > > The FETCH statement returns an update count of 1, but no ResultSet. > If I try executeQuery, a "no rows found" exception is thrown. > > Equivalent code in the C library interface works just fine. > > I need a workaround, because default ResultSet processing in the JDBC > driver (and also the jxDBCon driver) pretty much blow out the memory > of the JVM. > > ---------------------------(end of broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to [EMAIL PROTECTED] so that your > message can get through to the mailing list cleanly ---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/users-lounge/docs/faq.html