2017-07-28 8:36 GMT+02:00 David G. Johnston <david.g.johnston@xxxxxxxxx>: > On Thursday, July 27, 2017, David G. Johnston <david.g.johnston@xxxxxxxxx> > wrote: >> >> On Thursday, July 27, 2017, Vincenzo Romano <vincenzo.romano@xxxxxxxxxxx> >> wrote: >>> >>> The main difference is that with RETURNS SETOF RECORD I still get the >>> "usual"(tm) function argument list in the usual place: between two >>> parentheses. >>> It's a matter of style. And a consistent one. >>> But I still don't get the point for not having it for a single column. >>> >> >> Docs say: " When there are OUT or INOUT parameters, the RETURNS clause can >> be omitted. ". Sounds like you should you do just that. >> > > Except you'd have no where to put the "setof" modifier...So, yeah, you > probably aren't going to personal style preference catered to here. > > David J. Thanks David. I have found the actual documentation of the inconsistent syntax. It's here https://www.postgresql.org/docs/9.6/static/sql-createfunction.html at the description for the parameter "rettype": [QUOTE] When there are OUT or INOUT parameters, the RETURNS clause can be omitted. If present, it must agree with the result type implied by the output parameters: RECORD if there are **multiple output parameters**, or the same type as the single output parameter. The SETOF modifier indicates that the function will return a set of items, rather than a single item. The type of a column is referenced by writing table_name.column_name%TYPE. [/QUOTE] That single predicate, "multiple output parameters", is creating the (useless?) special case for a single column output. I would like to understand the typo protection mentioned by Tom earlier: I need to understand the reason for creating that special case. -- Vincenzo Romano - NotOrAnd.IT Information Technologies -- NON QVIETIS MARIBVS NAVTA PERITVS -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general