什么是MySQL存储过程中变量的作用域?

什么是MySQL存储过程中变量的作用域?

假设我们在BEGIN/END块中声明了一个变量,那么该变量的作用域将仅在该块内。我们还可以在另一个BEGIN/END块中声明同名的变量,这是完全合法的,但其作用域将仅在该块内。我们可以通过以下示例来理解:我们创建一个存储过程来显示变量的作用域。

阅读更多:MySQL 教程

示例

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)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程