MySQL 儲存過程中變數的範圍是什麼意思?


假設在 BEGIN/END 塊中聲明瞭一個變數,那麼此變數的範圍將在這個特定塊中。我們還可以在另一個 BEGIN/END 塊中宣告一個同名變數,這完全合法,但其範圍將位於其 BEGIN/END 塊中。可以藉助以下示例來理解,在該示例中,我們建立了一個過程來顯示變數的範圍 -

示例

mysql> Create Procedure Scope_variables()
    -> BEGIN
    -> DECLARE A Varchar(5) Default 'outer';
    -> BEGIN
    -> DECLARE A Varchar(5) Default 'inner';
    -> SELECT A;
    -> END;
    -> SELECT A;
    -> END;
    -> //
Query OK, 0 rows affected (0.08 sec)

在上面的過程中,我們有具有相同名稱的兩個變數,即 A。只要在範圍內,內部變數的宣告就具有優先權。關鍵在於,在達到第一個 END 時,內部變數就會消失,並且稱為“超出範圍”。要理解這個概念,請按照以下方式呼叫此過程 -

mysql> CALL Scope_variables();
+-------+
| A     |
+-------+
| inner |
+-------+
1 row in set (0.00 sec)

+-------+
| A     |
+-------+
| outer |
+-------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

更新日期: 22-Jun-2020

179 次瀏覽

開啟您的 職業

完成課程獲得認證

開始
廣告
© . All rights reserved.