Re: refcursor returned by pl/psql to jdbc

Поиск
Список
Период
Сортировка
От Barry Lind
Тема Re: refcursor returned by pl/psql to jdbc
Дата
Msg-id 3CB5E023.9070406@xythos.com
обсуждение исходный текст
Ответ на refcursor returned by pl/psql to jdbc  (Richard Emberson <emberson@phc.net>)
Список pgsql-jdbc
Richard,

Actually the problem is that you are using getLong() to get the cursor,
but you should be using getString().  The cursor comes back as a string
name ('<unnamed cursor 15>') in your example.  So to get this to work in
jdbc you would do the following:

create a statement object for the query: select user_data_select_all(12)
execute the query and call getString() on the result set to get the
cursor name.
create a statement object for the query: fetch all from ' + cursorname + '
execute the query and get your data from the resultset.

that should be it.  I have posted jdbc code to this list in the past
that shows real working java code that does this, but I can't find it
right now.

thanks,
--Barry

Dave Cramer wrote:
> Richard,
>
> The problem is that the cursor is un-named. Is there a way to name the
> cursor? jdbc doesn't know what to do with a column named <unnamed cursor
> 1>
>
> Dave
> On Wed, 2002-04-10 at 19:03, Richard Emberson wrote:
>
>>Ok, I wanted to wrap a select statement with a PL/pgsql procedure
>>(information hiding, etc.)
>>So I have:
>>
>>CREATE OR REPLACE FUNCTION user_data_select_all(BIGINT)
>>RETURNS REFCURSOR AS '
>>DECLARE
>>    -- parameters
>>    owner_id_p ALIAS FOR $1;
>>
>>    -- local variables
>>    rc REFCURSOR;
>>BEGIN
>>    OPEN rc FOR SELECT *
>>        FROM user_data
>>        WHERE
>>            owner_id = owner_id_p;
>>    RETURN rc;
>>END;
>>' LANGUAGE 'plpgsql' WITH (isstrict);
>>
>>Now from within psql I get the following:
>>
>>=> select user_data_select_all(12);
>> user_data_select_all
>>----------------------
>> <unnamed cursor 15>
>>(1 row)
>>
>>I kind of expected to see the actual rows?!?
>>
>>and from JDBC I get an exception:
>>Bad Long <unnamed cursor 1>
>>        at org.postgresql.jdbc2.ResultSet.toLong(ResultSet.java:1498)
>>        at org.postgresql.jdbc2.ResultSet.getLong(ResultSet.java:257)
>>
>>So the question is can I wrap a select function as return a resultset to
>>
>>JDBC?
>>Richard
>>
>>
>>
>>
>>---------------------------(end of broadcast)---------------------------
>>TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
>>
>>
>
>
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
>



В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Dave Cramer
Дата:
Сообщение: Re: refcursor returned by pl/psql to jdbc
Следующее
От: Richard Emberson
Дата:
Сообщение: Re: refcursor returned by pl/psql to jdbc