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)

相关文章