Newby Question - accessing refcursor.

From: burferd <jarzabek(at)pobox(dot)com>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: Newby Question - accessing refcursor.
Date: 2008-09-25 23:20:31
Message-ID: 19680083.post@talk.nabble.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc


I'm just getting started with postgre and jdbc.

I have a stored procedure listed below.

I'm trying to fetch the data returned from the stored procedure with the
method listed below.
When I do, the execute() method throws the following exception:
ERROR: cursor "<unnamed portal 1>" does not exist

I'm not sure what is causing this error -
I suspect it may be because the stored procedure is returning the REFCURSOR
as an OUT parameter rather than as a RETURN parameter.

If this is the case, could someone show me the fix?
The person writing the stored procedures is having problems returning a
RETURN value
with OUT parameters.

Thanks.

Java code

public void fetchUsers()
{
String query = "{call get_user_list( ?, ?, ? ) }";
try
{
CallableStatement cs = dbConn.prepareCall( query );
cs.registerOutParameter(1, java.sql.Types.JAVA_OBJECT);
cs.registerOutParameter(2, java.sql.Types.INTEGER);
cs.registerOutParameter(3, java.sql.Types.VARCHAR);
cs.execute();
ResultSet results = (ResultSet)cs.getObject(1);
if( results != null)
{
while( results.next() )
{
// Process row
}
results.close();
cs.close();
}
}
catch( Exception e)
{
System.out.println( "Error: " + e.getMessage() );
}

}

Stored procedure

FUNCTION Get_User_List(OUT p_Users REFCURSOR, OUT p_Return_Code INTEGER, OUT
p_Return_Message VARCHAR(100)) RETURNS RECORD AS $$
DECLARE
l_Rtn_Success INTEGER := 0;
l_Rtn_GeneralFailure INTEGER := 99;

l_Rtn_Success_Msg VARCHAR(100) := 'Successful';
l_Rtn_GeneralFailure_Msg VARCHAR(100) := 'General Failure';

BEGIN

p_Return_Code := l_Rtn_GeneralFailure;
p_Return_Message := l_Rtn_GeneralFailure_Msg;

OPEN p_Users FOR SELECT * FROM Users;

p_Return_Code := l_Rtn_Success;
p_Return_Message := l_Rtn_Success_Msg;

RETURN;

END;
$$ LANGUAGE plpgsql;

--
View this message in context: http://www.nabble.com/Newby-Question---accessing-refcursor.-tp19680083p19680083.html
Sent from the PostgreSQL - jdbc mailing list archive at Nabble.com.

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Kris Jurka 2008-09-25 23:31:24 Re: Newby Question - accessing refcursor.
Previous Message Michael Nacos 2008-09-25 18:46:10 Re: Performance comparison to psql.