2017-06-02 19:05 GMT+02:00 Pavel Stehule <pavel.steh...@gmail.com>:

>
>
> 2017-06-02 10:15 GMT+02:00 Pavel Stehule <pavel.steh...@gmail.com>:
>
>>
>>
>> 2017-06-02 10:06 GMT+02:00 Craig Ringer <cr...@2ndquadrant.com>:
>>
>>> On 2 June 2017 at 15:51, Pavel Stehule <pavel.steh...@gmail.com> wrote:
>>>
>>> > a, b := fx();
>>> >
>>> > Comments, notes, ideas?
>>>
>>> I'd be pretty happy to have
>>>
>>> (a, b) = (x, y);
>>> (a, b) = f(x);
>>>
>>> which is SQL-esque.
>>>
>>
>> This is not too far to my proposal - and it is fully adequate
>> alternative.
>>
>
> The ANSI form is related to SET or UPDATE commands - so in this case I see
> classic languages style https://en.wikipedia.org/wiki/
> Assignment_(computer_science) better. The assign statement in PLpgSQL is
> not related to embedded SQL. If we introduce SQL syntax and SET commands
> for schema variables then ( ) syntax is perfect, but for := PLpgSQL I am
> not sure
>
> It is maybe strange, but
>
> SET (a,b) =  (SELECT a,b FROM foo)
>
> a, b := fx()
>
> are sentences from two independent worlds and different syntax can be
> correct (depends how much we would to integrate procedural and SQL worlds
> .. 100% T-SQL, 80% SQL/PSM, ..20% PLpgSQL or 5%PL/SQL)
>

More thoughts:

1. syntax (a,b) := f() ... can mean - assign record to temporary composite
(a,b)
2. syntax a,b := f() ... can mean - unpack result composite and assign to
a, b fields

so both syntaxes has sense although we don't introduce relation to SQL - on
this way

a,b := 10, 20   -- ok .. attach a=c1, b=c2
a,b := (10,20)  -- ok .. attach a = r.c1, b = r.c2
(a,b) := (10,20) -- ok  attach ct = rt
(a,b) := 10,20 -- ok attach ct = row(c1, c2)

@1 syntax says "create composite target", @2 syntax says "unpack result".
Both should to work. Personally I prefer @1 .. due less parenthesis

Regards

Pavel



> Regards
>
> Pavel
>
>
>>
>>
>>>
>>> But what, if anything, does Ada do?
>>>
>>
>> What I know, no, Ada has not this statement - but the design of OUT
>> parameters in Ada absolutely different than PostgreSQL - so in this case we
>> cannot to use Ada language as our base :(
>>
>> Regards
>>
>> Pavel
>>
>>
>>>
>>> --
>>>  Craig Ringer                   http://www.2ndQuadrant.com/
>>>  PostgreSQL Development, 24x7 Support, Training & Services
>>>
>>
>>
>

Reply via email to