plpgsql: can I use a variable in a DECLARE later whithin the DECLARE?
Hi,
In plpgsql, i'm trying to use a variable initialised in a DECLARE in
a later initialisation expression whithin the same DECLARE:
DECLARE
x int := 23;
y int := x + 4
BEGIN
...
Experiments suggest that it works, but the docs are silent about that.
Is this a good idea, or should I be more careful and do it in a nested
block?
(For Lispers: is that a let, or a let*? ;-)
Thanks & cheers
- tomás
<tomas@tuxteam.de> writes:
In plpgsql, i'm trying to use a variable initialised in a DECLARE in
a later initialisation expression whithin the same DECLARE:
DECLARE
x int := 23;
y int := x + 4
BEGIN
...
Experiments suggest that it works, but the docs are silent about that.
Is this a good idea, or should I be more careful and do it in a nested
block?
I don't see any reason to foresee that it would break.
However, I notice that we don't actually have any regression tests
checking this. scope_test() in plpgsql.sql checks an adjacent
question, but not exactly this one. I'm a bit inclined now to go
add such a test.
regards, tom lane
On Fri, Oct 29, 2021 at 10:04:31AM -0400, Tom Lane wrote:
<tomas@tuxteam.de> writes:
In plpgsql, i'm trying to use a variable initialised in a DECLARE in
a later initialisation expression whithin the same DECLARE:DECLARE
x int := 23;
y int := x + 4
BEGIN
...Experiments suggest that it works, but the docs are silent about that.
Is this a good idea, or should I be more careful and do it in a nested
block?I don't see any reason to foresee that it would break.
Thanks :)
However, I notice that we don't actually have any regression tests
checking this. scope_test() in plpgsql.sql checks an adjacent
question, but not exactly this one. I'm a bit inclined now to go
add such a test.
Even more thanks.
After a long hiatus I have the luck to play again with PostgreSQL.
Let me say: you folks rock, seriously.
Cheers
- t