Newby Question - accessing refcursor. - Mailing list pgsql-jdbc

From burferd
Subject Newby Question - accessing refcursor.
Date
Msg-id 19680083.post@talk.nabble.com
Whole thread Raw
Responses Re: Newby Question - accessing refcursor.  (Kris Jurka <books@ejurka.com>)
List 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.


pgsql-jdbc by date:

Previous
From: "Ido M. Tamir"
Date:
Subject: Re: COPY support in JDBC driver?
Next
From: Kris Jurka
Date:
Subject: Re: Newby Question - accessing refcursor.