[SQL] Cursors and recursion

2005-12-28 Thread Don Croata
Hi,
 
I've been trying to do recursion and cursors in PL/PgSQL (PostgreSQL 8.1). It's a function who has a cursor and calls itself, but the problem raises after the first recursion, when PgSQL complains:
 
ERROR:  cursor "cur" already in use
 
Are the cursors kept globally? or cached like TEMP TABLE?
 
There's an example code available in http://www.croata.cl/cur.sql . In fact, it is an abstraction of the real stored procedure where the problem occurs.
 
--
 
Thanks in advance,
Cro
 


Re: [SQL] Cursors and recursion

2005-12-28 Thread Don Croata
Please, if someone recalls a link, book, piece of code or anything with info about this technique for PL/PgSQL (8.1), please let us know. We've been searching into google, groups.google, 
http://archives.postgresql.org and http://www.postgresql.org/docs/8.1/interactive with no results. Most of the answers are related to unclosed cursors for the "ERROR: cursor ... already in use" message.

 
Here's the sample code for this issue (i.e. error because cursor already defined in recursive PL/PgSQL function) at: http://www.croata.cl/cur.sql
 
--
 
Thanx again,
Cro
 
On 12/28/05, Tom Lane <[EMAIL PROTECTED]> wrote:
Don Croata <[EMAIL PROTECTED]> writes:> It's a function who has a cursor and calls itself, but the problem raises
> after the first recursion, when PgSQL complains:> ERROR:  cursor "cur" already in use> Are the cursors kept globally? or cached like TEMP TABLE?Cursor names are global within a particular session.
IIRC there is a syntax for opening a cursor without specifying a name,in which case plpgsql will pick one that's not in use.  This is probablywhat you want to use.   regards, tom lane