CALL
Syntax
CALL sp_name([parameter[,...]]) CALL sp_name[()]
Description
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.
CALL p()
and CALL p
are equivalent.
If parentheses are used, any number of spaces, tab characters and newline characters are 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.