MySQL變數型別比較:@variable
與variable
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
在跨呼叫時累積值的變化。
結論
理解@variable
和variable
之間的區別對於有效的MySQL開發至關重要。它允許您根據變數的範圍和初始化行為適當地管理變量,從而確保程式碼效率和準確性。
以上是MySQL 中的 @variable 與變數:有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!