CALL

CALL 语句用于调用当前数据库中已创建的存储过程,与 MySQL 中 CALL 语句的行为类似。

语法图

CallStmt
CALLProcedureName(parameterOpts)
ProcedureName
Identifier.Identifier
parameterOpts
parameterOptparameterOpt,parameterOpts
ParameterOpt
stringexpr@string

示例

调用存储过程:

use test delimiter $$ create procedure t1() begin select 1; select 2; end $$ create procedure t2(inNum int) begin select inNum; select 2; end $$ delimiter ; show procedure status; call t1; call t2(2);
ysql> use test Database changed mysql> delimiter $$ mysql> create procedure t1() -> begin -> select 1; -> select 2; -> end $$ ERROR 1304 (42000): PROCEDURE t1 already exists mysql> create procedure t2(inNum int) -> begin -> select inNum; -> select 2; -> end $$ Query OK, 0 rows affected (0.01 sec) mysql> delimiter ; mysql> show procedure status; +------+------+-----------+---------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation | +------+------+-----------+---------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | test | t1 | PROCEDURE | root@% | 2023-08-10 17:36:42 | 2023-08-10 17:36:42 | DEFINER | test | utf8mb4 | utf8mb4_bin | utf8mb4_bin | | test | t2 | PROCEDURE | root@% | 2023-08-10 17:47:13 | 2023-08-10 17:47:13 | DEFINER | | utf8mb4 | utf8mb4_bin | utf8mb4_bin | +------+------+-----------+---------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ 2 rows in set (0.00 sec) mysql> call t1; +---+ | 1 | +---+ | 1 | +---+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.00 sec) mysql> call t2(2); +-------+ | inNum | +-------+ | 2 | +-------+ 1 row in set (0.00 sec) +---+ | 2 | +---+ | 2 | +---+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.00 sec)