您所說的 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.