首頁 >資料庫 >mysql教程 >MySQL 中的 @variable 與變數:有什麼不同?

MySQL 中的 @variable 與變數:有什麼不同?

Barbara Streisand
Barbara Streisand原創
2025-01-21 13:52:11265瀏覽

@variable vs. variable in MySQL: What's the Difference?

MySQL變數型別比較:@variablevariable

MySQL 提供兩種類型的變數:使用者自訂變數和會話層級使用者自訂變數。後者以@符號開頭(@variable),而前者沒有(variable)。

使用者自訂變數

這類變數類型寬鬆,並在整個會話期間保持其值。它們在任何預存程序之外使用SET語句建立。例如:

<code class="language-sql">SET @var = 1;</code>

會話層級使用者自訂變數

與使用者自訂變數不同,這些變數僅在目前會話中可見。它們在存儲過程中聲明並作為參數傳遞。例如:

<code class="language-sql">CREATE PROCEDURE prc_test(var INT)
BEGIN
    DECLARE var2 INT;
    SET var2 = 1;
END;</code>

主要區別

這兩種變數類型的主要差異在於它們的範圍和初始化方式。過程變數每次呼叫過程時都會重新初始化為NULL,而會話層級變數在跨過程呼叫時會保留其值。以下程式碼片段示範了這一點:

<code class="language-sql">CREATE PROCEDURE prc_test()
BEGIN
    DECLARE var2 INT DEFAULT 1;
    SET var2 = var2 + 1;
    SET @var2 = @var2 + 1;
END;

SET @var2 = 1;</code>

範例輸出:

var2 @var2
2 2
2 3
2 4

如您所看到的,var2每次都會重新初始化,而@var2在跨呼叫時累積值的變化。

結論

理解@variablevariable之間的區別對於有效的MySQL開發至關重要。它允許您根據變數的範圍和初始化行為適當地管理變量,從而確保程式碼效率和準確性。

以上是MySQL 中的 @variable 與變數:有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn