MySQL存储过程中的变量范围是什么意思?

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)登录后复制