2016-03-21 23:49 GMT+01:00 Tom Lane <t...@sss.pgh.pa.us>:

> Jim Nasby <jim.na...@bluetreble.com> writes:
> > On 3/21/16 5:03 PM, Merlin Moncure wrote:
> >> in Oracle, you'd simply do:
> >> LogIt('I did something');
> > It would be *great* if we could support that in plpgsql.
> FWIW, I'm hesitant to just start accepting that syntax as if it were an
> equivalent to "SELECT f(x)" or "PERFORM f(x)".  I think that someday
> we will want to have the ability to have pass-by-reference parameters
> to functions, and that's a fundamentally incompatible behavior so it
> ought to be invoked by a new syntax.  I'd like to save "f(x)" as a
> bare statement for that purpose.  We could also consider inventing
> "CALL f(x)"; but supposing that we already had both "CALL f(x)" (which
> would allow x to be pass-by-ref and possibly modified) and "SELECT f(x)"
> (which would not), which one would you assign bare "f(x)" to mean?  It
> should be "CALL f(x)", not least because that would be the semantics most
> comparable to Oracle's behavior (since they have pass-by-ref parameters
> already).

I can live with SELECT fx(x). It is little bit dangerous, but this risk can
be easy detected by plpgsql_check.

> So, I'm -1 on not having any keyword at all.  I have no objection
> to Merlin's proposal though.  I agree that PERFORM is starting to
> look a bit silly, since it doesn't play with WITH for instance.

Isn't time to fix PERFORM instead?

> > While we're on the subject, it'd be great if variable := SELECT ...
> > worked too.
> It does, though you might need parens around the sub-select.
>                         regards, tom lane

Reply via email to