Reference function arguments by name
Hi!
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
<http://www.postgresql.org/docs/current/interactive/sql-syntax-calling-funcs.html>).
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
On 2013-05-09 21:46, Erwin Brandstetter wrote:
Hi!
The manual says here:
http://www.postgresql.org/docs/current/interactive/sql-createfunction.html
http://www.postgresql.org/docs/devel/static/sql-createfunction.htmlargname
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
<http://www.postgresql.org/docs/current/interactive/sql-syntax-calling-funcs.html>).
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-ARGUMENTSArguments of a SQL function can be referenced in the function body
using either names or numbers.
Regards
Erwin
It looks strongly that you people are of the opinion that "the code
documents
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!
The manual says here:
http://www.postgresql.org/docs/current/interactive/sql-createfunction.html
http://www.postgresql.org/docs/devel/static/sql-createfunction.htmlargname
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
<http://www.postgresql.org/docs/current/interactive/sql-syntax-calling-funcs.html>).
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-ARGUMENTSArguments of a SQL function can be referenced in the function body
using either names or numbers.
Regards
ErwinIt looks strongly that you people are of the opinion that "the code
documents
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
documentationFortunately, I do not use C. I prefer a HIGH-level language :-)
This reply seems unrelated.
Regards
Erwin
On 2013-05-11 09:20, Erwin Brandstetter wrote:
On 11.05.2013 10:13, Sian Mountbatten wrote:
On 2013-05-09 21:46, Erwin Brandstetter wrote:
Hi!
The manual says here:
http://www.postgresql.org/docs/current/interactive/sql-createfunction.html
http://www.postgresql.org/docs/devel/static/sql-createfunction.htmlargname
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
<http://www.postgresql.org/docs/current/interactive/sql-syntax-calling-funcs.html>).
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-ARGUMENTSArguments of a SQL function can be referenced in the function body
using either names or numbers.
Regards
ErwinIt looks strongly that you people are of the opinion that "the code
documents
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
documentationFortunately, 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
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).
Attachments:
sql-createfunction.diffapplication/octet-stream; name=sql-createfunction.diffDownload+1-1
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
--
Sent via pgsql-docs mailing list (pgsql-docs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-docs
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.htmlThe name of an argument. Some languages (currently only PL/pgSQL)
let you use the name in the function body. For other languages theThis 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.
--
Sent via pgsql-docs mailing list (pgsql-docs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-docs
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.htmlThe name of an argument. Some languages (currently only PL/pgSQL)
let you use the name in the function body. For other languages theThis 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.
--
Sent via pgsql-docs mailing list (pgsql-docs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-docs