Re: BUG #14275: cursor's variable in pgsql doesn't respect scope - Mailing list pgsql-bugs

From Andrew Gierth
Subject Re: BUG #14275: cursor's variable in pgsql doesn't respect scope
Date
Msg-id 874m72ggi4.fsf@news-spur.riddles.org.uk
Whole thread Raw
In response to BUG #14275: cursor's variable in pgsql doesn't respect scope  (klimych@tut.by)
Responses Re: BUG #14275: cursor's variable in pgsql doesn't respect scope
List pgsql-bugs
>>>>> "klimych" == klimych  <klimych@tut.by> writes:

 klimych> Executing of the code gives error "cursor "cur" already in
 klimych> use".

The cursor name (portal name) is global to the session, and for a bound
cursor it defaults to the name of the cursor variable:

40.7.3.5. Returning Cursors

  [...]

  Note: A bound cursor variable is initialized to the string value
  representing its name, so that the portal name is the same as the
  cursor variable name, unless the programmer overrides it by assignment
  before opening the cursor. But an unbound cursor variable defaults to
  the null value initially, so it will receive an
  automatically-generated unique name, unless overridden.

It's a bit ugly, but you can do

declare
  cur for select 1;
begin
  cur := null;  -- force a unique generated portal name
  open cur;
  //...

--
Andrew (irc:RhodiumToad)

pgsql-bugs by date:

Previous
From: klimych@tut.by
Date:
Subject: BUG #14275: cursor's variable in pgsql doesn't respect scope
Next
From: Pavel Stehule
Date:
Subject: Re: BUG #14275: cursor's variable in pgsql doesn't respect scope