Re: How return a refcusor using functions????
От | Renê Salomão |
---|---|
Тема | Re: How return a refcusor using functions???? |
Дата | |
Msg-id | 20030519121133.32480a86.rene@ibiz.com.br обсуждение исходный текст |
Ответ на | Re: How return a refcusor using functions???? (frank@chagford.com (Frank Millman)) |
Список | pgsql-general |
Hi fellows, I faced the same problem before... It's hard to come up with this solution, took me a while to read the documentation and browsing google... But I managed... Try this: create or replace function v_ArMaster(refcursor) returns refcursor as ' declare p_cursor AS ALIAS FOR $1; begin open curs1 for select AccNo, Name, Contact, Phone from ArMaster order by AccNo; return p_cursor; end;' language 'plpgsql'; begin; select v_ArMaster('cursor1'); fetch all from cursor1; end; On 9 May 2003 03:24:13 -0700 frank@chagford.com (Frank Millman) wrote: > 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 > > > ---------------------------(end of > broadcast)--------------------------- TIP 1: subscribe and unsubscribe > commands go to majordomo@postgresql.org >
В списке pgsql-general по дате отправления: