Michael Nolan <htfoot@gmail.com> writes:
> Shouldn't declaring a field that is also an OUT parameter throw an error?
No. The DECLARE is a block nested within the function,
and the parameter is declared at function scope.
So this is a standard case of an inner declaration masking
an outer one.
Possibly plpgsql_check can be set to complain about such cases,
but they're legal according to the language specification.
regards, tom lane