
假设如果我们在 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)
以上就是MySQL存储过程中的变量范围是什么意思?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号