Re: problems returning a resultset from a function

From: "Jim Wilson" <jimw(at)kelcomaine(dot)com>
To: "Leo Martin Orfei" <orfeileo(at)yahoo(dot)com>, <pgsql-general(at)postgresql(dot)org>
Subject: Re: problems returning a resultset from a function
Date: 2004-09-13 15:29:34
Message-ID: twig.1095089374.97040@kelcomaine.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-jdbc

Leo Martin Orfei said:

> hi.
>
> I have a problem with postgres functions.
> I need return a resultset from a postgres function and
> browse the resultset in a java app.
> I try with this simple function:
>
> create function test() returns catalog.refcursor as'
> declare aux refcursor;
> BEGIN
> OPEN aux FOR SELECT name, address FROM table;
> RETURN aux;
> END;
> 'LANGUAGE 'plpgsql';
>

My apologies if this has been responded to already as I am not currently
reading pgsql-jdbc and the archive three days behind. AFAIK there isn't
support for embedded work in jdbc, so it doesn't seem returning a cursor
directly would help (well maybe there is a way...I don't know).

In order to accomplish what I think you want to accomplish (which is to
establish a jdbc resultset object from a stored function) I've done the
following in the past:

Create a pl/pgsql function that returns a rowtype, DECLARED as follows:

-- the "table" in the following refers to an existing table definition
row table%rowtype;

In the pl/pgsql script you have something like:

-- return each row in the result set
for row in SELECT name, address FROM table loop
return next row;
end loop;
return;

Then in java call this using just a regular statement object:

// test() is the name of the stored function.
rs = statement.executeQuery("select * from test()");
while (rs.next()) {
...code to browse/process the rows...
}

Note the above examples might have a typo or two...but that's the general
idea. I have not used the stored procedure statement object as you did.
Perhaps that would be more portable.

Best,

Jim

--
Jim Wilson - IT Manager
Kelco Industries
PO Box 160
58 Main Street
Milbridge, ME 04658
207-546-7989 - FAX 207-546-2791
http://www.kelcomaine.com

In response to

Browse pgsql-general by date

  From Date Subject
Next Message John Sidney-Woollett 2004-09-13 15:40:21 Re: Autonomous transaction
Previous Message Daniel Daoust 2004-09-13 15:18:38 Autonomous transaction

Browse pgsql-jdbc by date

  From Date Subject
Next Message abhishekc 2004-09-14 08:16:17 jdbc driver
Previous Message Dave Cramer 2004-09-13 13:08:58 Re: Race condition in