2018-03-01 5:51 GMT+01:00 Peter Eisentraut <peter.eisentr...@2ndquadrant.com >:
> This seems to be a popular issue when porting from PL/SQL, so I'll throw > it out here for discussion. Apparently, in PL/SQL you can call another > procedure without the CALL keyword. Here is a patch that attempts to > implement that in PL/pgSQL as well. It's not very pretty. > The CALL is not optional in PL/SQL - I was surprised - it is required in some environments, and it should not be used in other (like PL/SQL) please, fix me, if I am wrong. SQL/PSM requires it. I agree, so in this case, the CALL can be optional - because procedures are called by different mechanism than functions - and there is not additional overhead. It is not strictly necessary, because tools like ora2pg has not any problem with procedure identification and some transformations. But - if we allow optional CALL in PL/pgSQL, then we will have inconsistence between PL/pgSQL and other environments, when the CALL will be required. What is not too nice. > I seem to recall that there were past discussions about this, with > respect to the PERFORM command, but I couldn't find them anymore. > > Also, I think PL/SQL allows you to call a procedure with no arguments > without parentheses. I have not implemented that. I think it could be > done, but it's not very appealing. > I don't like this feature. I don't see any benefit. Different case are functions - then users can implement some pseudovariables like CURRENT_USER, .. > If anyone has more details about the PL/SQL side of this, that would be > useful. What I could find is that using CALL and not using CALL appear > to be equivalent. > > -- > Peter Eisentraut http://www.2ndQuadrant.com/ > PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services >