Re: proposal for 8.3: Simultaneous assignment for PL/pgSQL

From: Andrew Dunstan <andrew(at)dunslane(dot)net>
To: Pavel Stehule <pavel(dot)stehule(at)hotmail(dot)com>
Cc: tgl(at)sss(dot)pgh(dot)pa(dot)us, pgsql-hackers(at)postgresql(dot)org
Subject: Re: proposal for 8.3: Simultaneous assignment for PL/pgSQL
Date: 2006-08-08 15:24:51
Message-ID: 44D8ACC3.6070408@dunslane.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Pavel Stehule wrote:
>
>> Tom Lane wrote:
>> > "Pavel Stehule" <pavel(dot)stehule(at)hotmail(dot)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

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Alvaro Herrera 2006-08-08 15:35:59 Re: proposal for 8.3: Simultaneous assignment for PL/pgSQL
Previous Message Pavel Stehule 2006-08-08 15:24:39 Re: proposal for PL packages for 8.3.