Hi

so 3. 11. 2018 v 22:47 odesílatel Tom Lane <t...@sss.pgh.pa.us> napsal:

> I wrote:
> > I'm going to go see about converting this to just call
> > expand_function_arguments and then drop all the special-case code.
>
> So while looking at that ... isn't the behavior for non-writable output
> parameters basically insane?  It certainly fails to accord with the
> plpgsql documentation, which shows an example that would throw an error:
>
>         CREATE PROCEDURE triple(INOUT x int)
>         ...
>         CALL triple(5);
>
> It's even weirder that you can get away with not supplying a writable
> target value for an output argument so long as it has a default.
>
> I think the behavior here ought to be "if the actual argument is a plpgsql
> variable, assign the output back to it, otherwise do nothing".  That's
> much closer to the behavior of OUT arguments in other old-school
> programming languages.
>

I don't agree. The constant can be used only for IN parameter. Safe
languages like Ada does copy result to variable used as INOUT parameter.
PL/SQL doesn't allow it too.

https://stackoverflow.com/questions/9977229/oracle-pls-00363-expression-cannot-be-used-as-an-assignment-target

The implemented limit can be good detection of passing parameters in bad
order.

Regards

Pavel


>
>                         regards, tom lane
>

Reply via email to