Fetching rows from a cursor returned by a stored function
От | James Ireland |
---|---|
Тема | Fetching rows from a cursor returned by a stored function |
Дата | |
Msg-id | 414AFFAD.6040404@halfcab.com обсуждение исходный текст |
Ответы |
Re: Fetching rows from a cursor returned by a stored function
|
Список | pgsql-jdbc |
Hi everybody I have a stored function that returns a large number of rows as a cursor. I am trying to prevent the entire result set beingreturned at once. The code fragment below hits an OutOfMemoryError on the "while(resultSet.next())" line, which I believeis for this reason. // ...get connection... connection.setAutoCommit(false); // prepare the stored function call statement = connection.prepareCall("{ ? = call get_events(?,?,?) }", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); statement.registerOutParameter(1, Types.OTHER); // set the fetch size so that the query doesn't return all results at once statement.setFetchDirection(ResultSet.FETCH_FORWARD); statement.setFetchSize(1000); // execute the query statement.execute(); resultSet = (ResultSet)statement.getObject(1); while(resultSet.next()) { // ...process rows... The code includes my first attempt to make this work by setting the fetch size. This still doesn't fix it, and I can seethat the result set that I am setting the fetch size for probably isn't the one that I am getting back and iterating through. I can't figure out how I ought to be doing this though. Can anyone offer any advice on how this should be done? Many thanks -James
В списке pgsql-jdbc по дате отправления: