Re: proposal for 8.3: Simultaneous assignment for PL/pgSQL - Mailing list pgsql-hackers

From Andrew Dunstan
Subject Re: proposal for 8.3: Simultaneous assignment for PL/pgSQL
Date
Msg-id 44D8ACC3.6070408@dunslane.net
Whole thread Raw
In response to Re: proposal for 8.3: Simultaneous assignment for PL/pgSQL  ("Pavel Stehule" <pavel.stehule@hotmail.com>)
Responses Re: proposal for 8.3: Simultaneous assignment for PL/pgSQL
Re: proposal for 8.3: Simultaneous assignment for PL/pgSQL
List pgsql-hackers
Pavel Stehule wrote:
>
>> Tom Lane wrote:
>> > "Pavel Stehule" <pavel.stehule@hotmail.com> writes:
>> >> a,b,c := out3fce(1); -- Simultaneous assignment
>> >
>> > I thought we rejected that idea once already, on the grounds that it
>> > would make it too hard to tell the difference between intended code
>> > and typos.
>> >
>>
>> In any case, I had some questions:
>>
>> . is it compatible with PLSQL?
>> . can the effect be achieved by assigning to a composite?
>
> I looked into SQL2003, and SQL2003 knows it (SQL/PSM):
>
> <assignment statement> ::=
>    <singleton variable assignment>
>  | <multiple variable assignment>
> <multiple variable assignment> ::=
>    SET <assignment target list> <equals operator> <assigned row>
> <assignment target list> ::=
>    <left paren> <assignment target> [ { <comma> <assignment target> 
> }... ] <right paren>
> <singleton variable assignment> ::=
>    SET <assignment target> <equals operator> <assignment source>
>

The parentheses are apparently required for multiple variables, so in 
our case it might look like this:
 (a,b,c) := foo(bar);

That might overcome the objection Tom referred to, I guess?


cheers

andrew



pgsql-hackers by date:

Previous
From: "Pavel Stehule"
Date:
Subject: Re: proposal for PL packages for 8.3.
Next
From: Alvaro Herrera
Date:
Subject: Re: proposal for 8.3: Simultaneous assignment for PL/pgSQL