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 >>> >> >> >