MySQL儲存過程返回值?


要從儲存過程中返回值,您需要使用使用者定義的特定會話變數。在變數名前新增@符號。

例如,為 valido 變數使用 @ 符號。其語法如下

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)

更新時間:30-7月-2019

13K+ 次瀏覽

開啟您的 職業生涯

完成課程以獲得認證

開始
廣告