要从存储过程返回值,您需要使用用户定义的会话特定变量。在变量名称前添加@符号。

例如,对变量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 //
mysql> DELIMITER ;

使用CALL命令调用存储过程。查询如下:

mysql> call ReturnValueFrom_StoredProcedure(10,6,@TotalSum);
+---------+
| @valido |
+---------+
| NULL    |
+---------+
1 row in set (0.00 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)

使用select语句检查用户定义的特定于会话的变量的结果。查询如下:

mysql> select @TotalDiff;
以下是输出:+------------+
| @TotalDiff |
+------------+
| 2          |
+------------+
1 row in set (0.00 sec)