Thread: Reference function arguments by name
The manual says here:
http://www.postgresql.org/docs/current/interactive/sql-createfunction.html
http://www.postgresql.org/docs/devel/static/sql-createfunction.html
- argname
The name of an argument. Some languages (currently only PL/pgSQL) let you use the name in the function body. For other languages the name of an input argument is just extra documentation, so far as the function itself is concerned; but you can use input argument names when calling a function to improve readability (see Section 4.3). In any case, the name of an output argument is significant, because it defines the column name in the result row type. (If you omit the name for an output argument, the system will choose a default column name.)
This has changed in version 9.2. SQL functions can reference the name. Ergo:
s /(currently only PL/pgSQL) / (currently only PL/pgSQL and SQL)
I tested it and it's correctly documented here:
http://www.postgresql.org/docs/current/interactive/xfunc-sql.html#XFUNC-SQL-FUNCTION-ARGUMENTS
> Arguments of a SQL function can be referenced in the function body using either names or numbers.
Regards
Erwin
Hi!It looks strongly that you people are of the opinion that "the code documents
The manual says here:
http://www.postgresql.org/docs/current/interactive/sql-createfunction.html
http://www.postgresql.org/docs/devel/static/sql-createfunction.html
- argname
The name of an argument. Some languages (currently only PL/pgSQL) let you use the name in the function body. For other languages the name of an input argument is just extra documentation, so far as the function itself is concerned; but you can use input argument names when calling a function to improve readability (see Section 4.3). In any case, the name of an output argument is significant, because it defines the column name in the result row type. (If you omit the name for an output argument, the system will choose a default column name.)
This has changed in version 9.2. SQL functions can reference the name. Ergo:
s /(currently only PL/pgSQL) / (currently only PL/pgSQL and SQL)
I tested it and it's correctly documented here:
http://www.postgresql.org/docs/current/interactive/xfunc-sql.html#XFUNC-SQL-FUNCTION-ARGUMENTS
> Arguments of a SQL function can be referenced in the function body using either names or numbers.
Regards
Erwin
itself". That is a myth produced by lazy software developers who cannot document
their code properly. You ought to be using Cweb for C code. Have a look at
the code for SQLite to see how comments in C can be used to provide decent
documentation
Fortunately, I do not use C. I prefer a HIGH-level language :-)
-- Sian Mountbatten Algol 68 Specialist
On 11.05.2013 10:13, Sian Mountbatten wrote:
On 2013-05-09 21:46, Erwin Brandstetter wrote:Hi!It looks strongly that you people are of the opinion that "the code documents
The manual says here:
http://www.postgresql.org/docs/current/interactive/sql-createfunction.html
http://www.postgresql.org/docs/devel/static/sql-createfunction.html
- argname
The name of an argument. Some languages (currently only PL/pgSQL) let you use the name in the function body. For other languages the name of an input argument is just extra documentation, so far as the function itself is concerned; but you can use input argument names when calling a function to improve readability (see Section 4.3). In any case, the name of an output argument is significant, because it defines the column name in the result row type. (If you omit the name for an output argument, the system will choose a default column name.)
This has changed in version 9.2. SQL functions can reference the name. Ergo:
s /(currently only PL/pgSQL) / (currently only PL/pgSQL and SQL)
I tested it and it's correctly documented here:
http://www.postgresql.org/docs/current/interactive/xfunc-sql.html#XFUNC-SQL-FUNCTION-ARGUMENTS
> Arguments of a SQL function can be referenced in the function body using either names or numbers.
Regards
Erwin
itself". That is a myth produced by lazy software developers who cannot document
their code properly. You ought to be using Cweb for C code. Have a look at
the code for SQLite to see how comments in C can be used to provide decent
documentation
Fortunately, I do not use C. I prefer a HIGH-level language :-)
This reply seems unrelated.
Regards
Erwin
The point is that documentation of the code always takes 2nd place. Why
On 11.05.2013 10:13, Sian Mountbatten wrote:On 2013-05-09 21:46, Erwin Brandstetter wrote:Hi!It looks strongly that you people are of the opinion that "the code documents
The manual says here:
http://www.postgresql.org/docs/current/interactive/sql-createfunction.html
http://www.postgresql.org/docs/devel/static/sql-createfunction.html
- argname
The name of an argument. Some languages (currently only PL/pgSQL) let you use the name in the function body. For other languages the name of an input argument is just extra documentation, so far as the function itself is concerned; but you can use input argument names when calling a function to improve readability (see Section 4.3). In any case, the name of an output argument is significant, because it defines the column name in the result row type. (If you omit the name for an output argument, the system will choose a default column name.)
This has changed in version 9.2. SQL functions can reference the name. Ergo:
s /(currently only PL/pgSQL) / (currently only PL/pgSQL and SQL)
I tested it and it's correctly documented here:
http://www.postgresql.org/docs/current/interactive/xfunc-sql.html#XFUNC-SQL-FUNCTION-ARGUMENTS
> Arguments of a SQL function can be referenced in the function body using either names or numbers.
Regards
Erwin
itself". That is a myth produced by lazy software developers who cannot document
their code properly. You ought to be using Cweb for C code. Have a look at
the code for SQLite to see how comments in C can be used to provide decent
documentation
Fortunately, I do not use C. I prefer a HIGH-level language :-)
This reply seems unrelated.
Regards
Erwin
argue about readability when the only help you give to anybody who is
unfortunate enough to have to maintain your software are names of variables?
It doesn't matter a damn whether you put names in or out of a function.
What matters is what help do you give your hapless maintainers?
Sincerely
-- Sian Mountbatten Algol 68 Specialist
On Thu, May 9, 2013 22:46, Erwin Brandstetter wrote: > This has changed in version 9.2. SQL functions can reference the name. Ergo: > > s /(currently only PL/pgSQL) / (currently only PL/pgSQL and SQL) > > Here is the patch (don't feed them Battenbergs).
Attachment
Erwin Brandstetter <brandstetter@falter.at> writes: > The manual says here: > http://www.postgresql.org/docs/current/interactive/sql-createfunction.html >> The name of an argument. Some languages (currently only PL/pgSQL) >> let you use the name in the function body. For other languages the > This has changed in version 9.2. SQL functions can reference the name. Ah, this comment got missed when updating the docs for that feature. Fixed, thanks for spotting it! regards, tom lane
On Sat, 2013-05-11 at 12:10 -0400, Tom Lane wrote: > Erwin Brandstetter <brandstetter@falter.at> writes: > > The manual says here: > > http://www.postgresql.org/docs/current/interactive/sql-createfunction.html > > >> The name of an argument. Some languages (currently only PL/pgSQL) > >> let you use the name in the function body. For other languages the > > > This has changed in version 9.2. SQL functions can reference the name. > > Ah, this comment got missed when updating the docs for that feature. > Fixed, thanks for spotting it! According to https://wiki.postgresql.org/wiki/PL_Matrix, several other languages support named parameters. Maybe the parenthetical remark should be removed altogether.
On Mon, 2013-06-17 at 23:15 -0400, Peter Eisentraut wrote: > On Sat, 2013-05-11 at 12:10 -0400, Tom Lane wrote: > > Erwin Brandstetter <brandstetter@falter.at> writes: > > > The manual says here: > > > http://www.postgresql.org/docs/current/interactive/sql-createfunction.html > > > > >> The name of an argument. Some languages (currently only PL/pgSQL) > > >> let you use the name in the function body. For other languages the > > > > > This has changed in version 9.2. SQL functions can reference the name. > > > > Ah, this comment got missed when updating the docs for that feature. > > Fixed, thanks for spotting it! > > According to https://wiki.postgresql.org/wiki/PL_Matrix, several other > languages support named parameters. Maybe the parenthetical remark > should be removed altogether. Fixed, and also updated the equally wrong claim in 8.4...9.1 that only PL/pgSQL supports this.