您所說的 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)
廣告
資料結構
網路
資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP