Re: Fetching rows from a cursor returned by a stored function

From: Oliver Jowett <oliver(at)opencloud(dot)com>
To: James Ireland <james(at)halfcab(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Fetching rows from a cursor returned by a stored function
Date: 2004-09-17 22:55:01
Message-ID: 414B6B45.20900@opencloud.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

James Ireland wrote:
> 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 being returned at
> once. The code fragment below hits an OutOfMemoryError on the
> "while(resultSet.next())" line, which I believe is for this reason.

Unfortunately the current driver does not support cursor-based retrieval
for functions that return refcursors: it grabs the whole resultset at
once when the refcursor is retrieved as Types.OTHER.

If you don't mind the ugliness, you could register the result parameter
as Types.VARCHAR; that will give you a cursor name that you can then use
to execute FETCH queries yourself.

It might even work to execute FETCH FORWARD ALL for the cursor with a
non-zero fetchsize (and let the driver manage incremental fetches) but
I'm not sure what the behaviour of a non-zero row limit on a FETCH query
is at the protocol level..

-O

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Tom Lane 2004-09-17 23:02:57 Re: Fetching rows from a cursor returned by a stored function
Previous Message James Ireland 2004-09-17 15:15:57 Fetching rows from a cursor returned by a stored function