Re: How return a refcusor using functions???? - Mailing list pgsql-general

From frank@chagford.com (Frank Millman)
Subject Re: How return a refcusor using functions????
Date
Msg-id 246a4e07.0305090224.3f04f396@posting.google.com
Whole thread Raw
Responses Re: How return a refcusor using functions????  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: How return a refcusor using functions????  (Renê Salomão <rene@ibiz.com.br>)
List pgsql-general
spraveen2001@yahoo.com (Praveen) wrote in message news:<98d8ec76.0305020423.951c12f@posting.google.com>...
> Hi All,
>
> How return a ref cursor using function in postgress db. Please can anyone
> send me sample function? It is very very urgent.
>
> Praveen

Hi Praveen

I know part of the answer, but I was about to post my own question in
this regard, so I hope someone else reads this and can answer my
question as well.

Here are two alternative methods of defining a function to return a
refcursor -

1)
create or replace function v_ArMaster() returns refcursor as '
  declare
    curs1 cursor for select AccNo, Name, Contact, Phone from ArMaster
order by AccNo;
  begin
    open curs1;
    return curs1;
  end;'
language 'plpgsql';

2)
create or replace function v_ArMaster() returns refcursor as '
  declare
    curs1 refcursor;
  begin
    open curs1 for select AccNo, Name, Contact, Phone from ArMaster
order by AccNo;
    return curs1;
  end;'
language 'plpgsql';

According to my reading of the documentation, they should be
equivalent. I tested them as follows -

begin;
select v_ArMaster();
fetch all from curs1;
end;

Version 1 works correctly. Version 2 fails with the following error -

NOTICE: PerformPortalFetch: portal "curs1" not found.

Please could someone advise on the correct syntax for version 2. I
need this because I want to add some if...then...else statements to
vary the building of the cursor, and you cannot do this inside the
"declare" section of the function.

Thanks in advance

Frank Millman


pgsql-general by date:

Previous
From: arne@easyconnect.no (Arne Wulvik)
Date:
Subject: Cache lookup failed, and then it doesn't
Next
From: "Brian Sanders"
Date:
Subject: Opposite value for RESTRICT in foreign keys?