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. 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. Examples: -- Like EXECUTE PROCEDURE in PSQL CALL proc(1, 2) INTO v1, v2 -- Can ignore some output parameters in PSQL CALL proc(1, 2) RETURNING o1 INTO a1 -- Can ignore some output parameters in DSQL CALL proc(1, 2) RETURNING o1 -- Ignore all output parameters in DSQL and PSQL CALL proc(1, 2) Adriano Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel