Re: recursion in plpgsql

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: David Gauthier <davegauthierpg(at)gmail(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: recursion in plpgsql
Date: 2018-11-07 00:29:56
Message-ID: 17949.1541550596@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

David Gauthier <davegauthierpg(at)gmail(dot)com> writes:
> I'm trying/failing to write a recursive plpgsql function where the function
> tries to operate on a hierary of records in a reflexive table.
> parent-child-grandchild type of recursion.
> I tried with a cursor, but got a "cursor already in use" error. So that
> looks like scoping.

IIRC, the "portal" underlying a plpgsql cursor just gets the same name
as the cursor variable by default, so you'll get portal-name conflicts
with the coding style you show here.

It's possible to avoid that by ensuring that each cursor gets a different
portal name. I'm too lazy to check the details right now, but at the
very least there's a way to do it by declaring the variable as "refcursor"
and assigning it a different name at each nesting depth. There might be
some more elegant solution, too.

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message rob stone 2018-11-07 00:30:18 Re: Running pg_upgrade Version 11
Previous Message Steve Crawford 2018-11-06 23:31:24 Re: recursion in plpgsql