CALL sp_name([parameter[,...]])
CALL sp_name[()]


The CALL statement invokes a stored procedure that was defined previously with CREATE PROCEDURE.

Stored procedure names can be specified as database_name.procedure_name. Procedure names and database names can be quoted with backticks (). This is necessary if they are reserved words, or contain special characters. See identifier qualifiers for details.

Before MySQL 5.1.13, stored procedures that take no arguments required parentheses. In current releases of MariaDB, CALL p() and CALL p are equivalent.

If parentheses are used, any number of spaces, tab characters and new line characters is allowed between the procedure's name and the open parenthesis.

CALL can pass back values to its caller using parameters that are declared as OUT or INOUT parameters. If no value is assigned to an OUT parameter, NULL is assigned (and its former value is lost). To pass such values from another stored program you can use user-defined variables, local variables or routine's parameters; in other contexts, you can only use user-defined variables.

CALL can also be executed as a prepared statement. Placeholders can be used for IN parameters in all versions of MariaDB; for OUT and INOUT parameters, placeholders can be used since MariaDB 5.5.

When the procedure returns, a client program can also obtain the number of rows affected for the final statement executed within the routine: At the SQL level, call the ROW_COUNT() function; from the C API, call the mysql_affected_rows() function.

If the CLIENT_MULTI_RESULTS API flag is set, CALL can return any number of resultsets and the called stored procedure can execute prepared statements. If it is not set, at most one resultset can be returned and prepared statements cannot be used within procedures.


Comments loading...