Thread: plpgsql, declare blocks, and '=' versus ':='

plpgsql, declare blocks, and '=' versus ':='

From
James Robinson
Date:
It seems that [ in 8.2.9 at least ], in a plpgsql declare block,
assignment to declared variable can use either the proper ':='
operator or the unexpected and undocumented '=' operator. See
following script. The magic handling of '=' ought to get documented at
least.

[ plpgsql-declarations.html makes no mention of '=' token handling in
either 8.3 or 8.2. docs ]

---
create or replace function test_1() returns int as
$$
declare
    value int = 12; -- wow -- no colon!
begin
    return value;
end;
$$ language plpgsql;


create or replace function test_2() returns int as
$$
declare
    value int := 14; -- correct
begin
    return value;
end;
$$ language plpgsql;



select test_1();
-- returns 12

select test_2();
-- returns 14

-----





----
James Robinson
Socialserve.com


Re: plpgsql, declare blocks, and '=' versus ':='

From
Alvaro Herrera
Date:
James Robinson wrote:
> It seems that [ in 8.2.9 at least ], in a plpgsql declare block,
> assignment to declared variable can use either the proper ':=' operator
> or the unexpected and undocumented '=' operator. See following script.
> The magic handling of '=' ought to get documented at least.
>
> [ plpgsql-declarations.html makes no mention of '=' token handling in
> either 8.3 or 8.2. docs ]

Yes.

--
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.