On 24 November 2011 14:12, Alban Hertroys <haram...@gmail.com> wrote:

> On 24 November 2011 14:52, Gavin Casey <gpjca...@googlemail.com> wrote:
> > This works in 9.1.1 but seems like a bug to me:
> >
> > create function xout(_x INTEGER)
> > returns integer
> > as $$
> > begin
> >    _x = _x * 2;
>
> I would expect an error here, as having an expression without a
> context (an if-statement, for example) should be illegal.
>
> An assignment should be fine though:
>    _x := _x * 2;
>
> I'm guessing people make errors like this frequently enough that the
> parser was relaxed to accept this expression as an assignment, even
> though the syntax for those is slightly different. There is no other
> possible explanation for such a line, after all, the author of this
> code clearly meant to put an assignment there.
>
> >    return _x;
> > end;
> > $$ LANGUAGE plpgsql;
> >
> > select xout(4);
>
> What is the output? I'm guessing it's 8, since there was no syntax
> error. That would be the right answer too, in that case.
> Function-local variables don't matter outside the function, after all.
> --
> If you can't see the forest for the trees,
> Cut the trees and you'll see there is no forest.
>

It was actually the reassignment of an IN parameter that I was questioning,
the '=' sign on it's own was my typo, apologies for confusion.

Reply via email to