Обсуждение: 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