Thread: Re: proposal - plpgsql - support standard syntax for named arguments for cursors
Re: proposal - plpgsql - support standard syntax for named arguments for cursors
From
Tom Lane
Date:
Pavel Stehule <pavel.stehule@gmail.com> writes: > I propose to enhancing to ANSI/SQL standard syntax for named arguments > `argname => value` Is there any reason to think that that's actually in the standard? I poked around in SQL:2021 a little and couldn't find anything about cursors with arguments at all. regards, tom lane
Re: proposal - plpgsql - support standard syntax for named arguments for cursors
From
Pavel Stehule
Date:
Hi
so 8. 2. 2025 v 20:25 odesílatel Tom Lane <tgl@sss.pgh.pa.us> napsal:
Pavel Stehule <pavel.stehule@gmail.com> writes:
> I propose to enhancing to ANSI/SQL standard syntax for named arguments
> `argname => value`
Is there any reason to think that that's actually in the standard?
I poked around in SQL:2021 a little and couldn't find anything about
cursors with arguments at all.
I think the possibility to use named arguments in OPEN statements is a PostgreSQL proprietary feature.
And usage of cursors in PL/pgSQL is based on PL/SQL (not on SQL/PSM from standard), but named
arguments for cursor is PostgreSQL proprietary feature and the syntax based on usage `:=` is our
proprietary too.
It is from the window, when the named arguments was supported already
https://www.postgresql.org/message-id/20091008023926.1BE85753FB7@cvs.postgresql.org (the syntax was changed before release)
but not with ANSI syntax https://github.com/postgres/postgres/commit/865f14a2d31af23a05bbf2df04c274629c5d5c4d
I forgot to fix this in my patch for 9.5 - probably I missed this functionality
Regards
Pavel
regards, tom lane
Re: proposal - plpgsql - support standard syntax for named arguments for cursors
From
Tom Lane
Date:
Pavel Stehule <pavel.stehule@gmail.com> writes: > so 8. 2. 2025 v 20:25 odesílatel Tom Lane <tgl@sss.pgh.pa.us> napsal: >> Is there any reason to think that that's actually in the standard? > I think the possibility to use named arguments in OPEN statements is a > PostgreSQL proprietary feature. > And usage of cursors in PL/pgSQL is based on PL/SQL (not on SQL/PSM from > standard), but named > arguments for cursor is PostgreSQL proprietary feature and the syntax based > on usage `:=` is our > proprietary too. Hmm ... yeah, it's not in SQL/PSM, but looking at PL/SQL: https://docs.oracle.com/en/database/oracle/oracle-database/19/lnpls/OPEN-statement.html I see You can specify actual cursor parameters with either positional notation or named notation. For information about these notations, see "Positional, Named, and Mixed Notation for Actual Parameters". and that link blesses the use of "name => value" (and not ":="). So agreed, we should adjust this. Is there a reason we need a whole new test case instead of tweaking one of the existing ones? regards, tom lane
Re: proposal - plpgsql - support standard syntax for named arguments for cursors
From
Pavel Stehule
Date:
so 8. 2. 2025 v 22:25 odesílatel Tom Lane <tgl@sss.pgh.pa.us> napsal:
Pavel Stehule <pavel.stehule@gmail.com> writes:
> so 8. 2. 2025 v 20:25 odesílatel Tom Lane <tgl@sss.pgh.pa.us> napsal:
>> Is there any reason to think that that's actually in the standard?
> I think the possibility to use named arguments in OPEN statements is a
> PostgreSQL proprietary feature.
> And usage of cursors in PL/pgSQL is based on PL/SQL (not on SQL/PSM from
> standard), but named
> arguments for cursor is PostgreSQL proprietary feature and the syntax based
> on usage `:=` is our
> proprietary too.
Hmm ... yeah, it's not in SQL/PSM, but looking at PL/SQL:
https://docs.oracle.com/en/database/oracle/oracle-database/19/lnpls/OPEN-statement.html
I see
You can specify actual cursor parameters with either
positional notation or named notation. For information about
these notations, see "Positional, Named, and Mixed Notation
for Actual Parameters".
and that link blesses the use of "name => value" (and not ":=").
So agreed, we should adjust this.
Is there a reason we need a whole new test case instead of
tweaking one of the existing ones?
just aesthetic reasons - it looks strange for me to mix two styles in one code.
But in this very simple case - it is not important.
please, modify tests how you like
Regards
Pavel
regards, tom lane