首頁  >  文章  >  資料庫  >  MySQL 中的使用者定義變數與局部變數?

MySQL 中的使用者定義變數與局部變數?

WBOY
WBOY轉載
2023-09-06 21:05:061345瀏覽

MySQL 中的用户定义变量与局部变量?

使用者定義的變數也稱為會話特定變數。它是一種鬆散類型變量,可以在會話中的某個位置進行初始化,並包含使用者定義變數的值,直到會話結束。

使用者定義變數以符號 @ 為前綴。例如:

@anyVariableName;

有兩種方法可以初始化使用者定義的變數。您可以使用 SET 指令或使用 SELECT 查詢。第一種方法如下:

SET @anyVariableName=anyValue;

第二種方法如下:

SELECT @anyVariableName :=anyValue;

如果您在 SELECT 查詢中不使用冒號 (:),則會將其計算為表達式。結果要麼為真,要麼為假:

mysql> select @m=10;

以下是輸出:

+-------+
| @m=10 |
+-------+
|     1 |
+-------+
1 row in set (0.00 sec)

局部變數可以在預存程序、函數等中使用,與DECLARE關鍵字一起使用。不需要像使用者定義變數那樣的@前綴。

局部變數的語法如下。

DECLARE yourVariableName dataType;

注意:局部變數和使用者定義變數之間的主要區別在於,每次呼叫預存程序時,局部變數都會用NULL 值重新初始化,而會話特定變數或用戶定義變數則不會。未使用 NULL 重新初始化。一個使用者設定的使用者定義變數不能被其他使用者看到。給定使用者的任何會話變數都會在使用者退出時自動銷毀。

這裡是會話特定變數和局部變數的演示與預存程序。建立具有局部變數和使用者定義變數的預存程序的查詢如下:

mysql> DELIMITER //
mysql> CREATE PROCEDURE sp_LocalAndUserDefinedVariableDemo()
   -> BEGIN
   -> DECLARE localVariable int default 10;
   -> SET localVariable=localVariable+10;  
   -> SET @userVariable=@userVariable+10;
   -> SELECT localVariable;
   -> SELECT @userVariable;
   -> END;
   -> //
Query OK, 0 rows affected (0.39 sec)
mysql> DELIMITER ;

現在設定使用者定義變數的值。查詢如下:

mysql> SET @userVariable=10;
Query OK, 0 rows affected (0.00 sec)

現在呼叫預存程序。第一次呼叫時,使用者定義變數為 10 10=20,局部變數為 10 10=20。

使用call 指令呼叫預存程序:

mysql> CALL sp_LocalAndUserDefinedVariableDemo();

以下是輸出:

+---------------+
| localVariable |
+---------------+
|            20 |
+---------------+
1 row in set (0.32 sec)
+---------------+
| @userVariable |
+---------------+
|            20 |
+---------------+
1 row in set (0.34 sec)
Query OK, 0 rows affected (0.36 sec)

在第二次呼叫中,使用者定義的變數會保存值20 並新增10,如20 10=30,而局部變數再次以10 重新初始化並加入10,如10 10=20。

呼叫預存程序並檢查範例輸出:

mysql> CALL sp_LocalAndUserDefinedVariableDemo();

以下是輸出:

+---------------+
| localVariable |
+---------------+
|            20 |
+---------------+
1 row in set (0.00 sec)
+---------------+
| @userVariable |
+---------------+
|            30 |
+---------------+
1 row in set (0.01 sec)
Query OK, 0 rows affected (0.02 sec)

在第三次呼叫中,使用者定義的變數會保存值30 並新增10 ,如30 10=40,而局部變數再次使用10 重新初始化並添加10,如10 10=20。

現在你可以說,在每個過程呼叫中,局部變數都會用某個值重新初始化,該值可能是NULL 或其他值,就像在我的例子中,我提供了預設值10。這意味著它將局部變數設定為值 10每個過程調用,而使用者定義的變數則不然。

以上是MySQL 中的使用者定義變數與局部變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除