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  (Oliver Jowett <oliver@opencloud.com>)
Список 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 по дате отправления:

Предыдущее
От: Kris Jurka
Дата:
Сообщение: Re: Savepoint support implemented.
Следующее
От: Oliver Jowett
Дата:
Сообщение: Re: Fetching rows from a cursor returned by a stored function