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

WBOY
發布: 2023-09-06 21:05:06
轉載
1279 人瀏覽過

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
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!