31.05.2021 16:19, Adriano dos Santos Fernandes wrote:
Hi!

EXECUTE PROCEDURE is full of weirdness, so I propose that standard SQL
CALL is adapted for our needs.

EXECUTE PROCEDURE [ <package> . ] <name>
     [ <value list> | ( <value list> ) ]
     [ RETURNING_VALUES <variable list> |
       RETURNING_VALUES ( <variable list> ) ]

It does not allow one to "select" what just it wants.

So if one changes the procedure output parameters, clients (DSQL and
PSQL) needs to be changed. It's like "SELECT *" which is sure a bad
practice.

It has this weird RETURNING_VALUES and multiple syntax about parenthesis.

It does not allow to just execute and ignore output parameters.

  As I see, all problems above is related with RETURNING_VALUES clause, correct 
?

I propose that CALL syntax:

CALL [ <package> . ] <name> ( <value list> )
     [ RETURNING { * | <value list> } ]
     [ INTO <variable list> ]

A CALL without RETURNING and without INTO will execute the procedure and
ignore possible output parameters.

A CALL without RETURNING and with INTO (PSQL only), works like with
"RETURNING *" and EXECUTE PROCEDURE ... RETURNING_VALUES.

  If "CALL" is not accepted (because of non-standard syntax), why not add 
"correct"
RETURNING clause into EXECUTE PROCEDURE ? Leave old RETURNING_VALUES clause as 
is for
compatibility and allow to use new good RETURNING clause instead.

Just my 0.02 uah

Regards,
Vlad


Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to