MySQL 存储过程返回值?
mysqlmysqli database
要从存储过程返回值,您需要使用用户定义的会话特定变量。在变量名称前添加 @ 符号。
例如,对变量 valido 使用 @symbol。其语法如下:
SELECT @valido;
每当您使用 select 语句时,都需要使用 @anyVariableName。语法如下:
SELECT @anyVariableName;
以下是返回值的存储过程的演示。创建存储过程的查询如下:
mysql> create procedure ReturnValueFrom_StoredProcedure -> ( -> In num1 int, -> In num2 int, -> out valido int -> ) -> Begin -> IF (num1> 4 and num2 > 5) THEN -> SET valido = (num1+num2); -> ELSE -> SET valido = (num1-num2); -> END IF; -> select @valido; -> end // Query OK, 0 rows affected (0.32 sec) mysql> DELIMITER ;
使用 CALL 命令调用存储过程。查询如下:
mysql> call ReturnValueFrom_StoredProcedure(10,6,@TotalSum); +---------+ | @valido | +---------+ | NULL | +---------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec)
现在使用 select 语句检查存储过程的结果。查询如下:
mysql> select @TotalSum;
输出结果如下:
+-----------+ | @TotalSum | +-----------+ | 16 | +-----------+ 1 row in set (0.00 sec)
现在第二次调用两个值的差值。调用存储过程。
mysql> call ReturnValueFrom_StoredProcedure(4,2,@TotalDiff); +---------+ | @valido | +---------+ | NULL | +---------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec)
使用 select 语句检查用户定义的会话特定变量的结果。查询如下:
mysql> select @TotalDiff;
输出结果如下:
+------------+ | @TotalDiff | +------------+ | 2 | +------------+ 1 row in set (0.00 sec)