
用户定义的变量也称为会话特定变量。它是一种松散类型变量,可以在会话中的某个位置进行初始化,并包含用户定义变量的值,直到会话结束。
用户定义变量以符号 @ 为前缀。例如:
@anyVariableName;
有两种方法可以初始化用户定义的变量。您可以使用 SET 命令或使用 SELECT 查询。第一种方法如下:
SET @anyVariableName=anyValue;
第二种方法如下:
SELECT @anyVariableName :=anyValue;
如果您在 SELECT 查询中不使用冒号 (:),则会将其计算为表达式。结果要么为真,要么为假:
mysql> select @m=10;
以下是输出:
+-------+ | @m=10 | +-------+ | 1 | +-------+ 1 row in set (0.00 sec)
局部变量可以在存储过程、函数等中使用,与DECLARE关键字一起使用。不需要像用户定义变量那样的@前缀。
局部变量的语法如下。
DECLARE yourVariableName dataType;
注意:局部变量和用户定义变量之间的主要区别在于,每次调用存储过程时,局部变量都会用 NULL 值重新初始化,而会话特定变量或用户定义变量则不会。未使用 NULL 重新初始化。一个用户设置的用户定义变量不能被其他用户看到。给定用户的任何会话变量都会在用户退出时自动销毁。
这里是会话特定变量和局部变量的演示与存储过程。创建带有局部变量和用户定义变量的存储过程的查询如下:
云点滴客户解决方案是针对中小企业量身制定的具有简单易用、功能强大、永久免费使用、终身升级维护的智能化客户解决方案。依托功能强大、安全稳定的阿里云平 台,性价比高、扩展性好、安全性高、稳定性好。高内聚低耦合的模块化设计,使得每个模块最大限度的满足需求,相关模块的组合能满足用户的一系列要求。简单 易用的云备份使得用户随时随地简单、安全、可靠的备份客户信息。功能强大的报表统计使得用户大数据分析变的简单,
0
mysql> DELIMITER // mysql> CREATE PROCEDURE sp_LocalAndUserDefinedVariableDemo() -> BEGIN -> DECLARE localVariable int default 10; -> SET localVariable=localVariable+10; -> SET @userVariable=@userVariable+10; -> SELECT localVariable; -> SELECT @userVariable; -> END; -> // Query OK, 0 rows affected (0.39 sec) mysql> DELIMITER ;
现在设置用户定义变量的值。查询如下:
mysql> SET @userVariable=10; Query OK, 0 rows affected (0.00 sec)
现在调用存储过程。第一次调用时,用户定义变量为 10+10=20,局部变量为 10+10=20。
使用 call 命令调用存储过程:
mysql> CALL sp_LocalAndUserDefinedVariableDemo();
以下是输出:
+---------------+ | localVariable | +---------------+ | 20 | +---------------+ 1 row in set (0.32 sec) +---------------+ | @userVariable | +---------------+ | 20 | +---------------+ 1 row in set (0.34 sec) Query OK, 0 rows affected (0.36 sec)
在第二次调用中,用户定义的变量将保存值 20 并添加 10,如 20+10=30,而局部变量再次用 10 重新初始化并添加 10,如 10+10=20。
调用存储过程并检查示例输出:
mysql> CALL sp_LocalAndUserDefinedVariableDemo();
以下是输出:
+---------------+ | localVariable | +---------------+ | 20 | +---------------+ 1 row in set (0.00 sec) +---------------+ | @userVariable | +---------------+ | 30 | +---------------+ 1 row in set (0.01 sec) Query OK, 0 rows affected (0.02 sec)
在第三次调用中,用户定义的变量将保存值 30 并添加 10,如 30+10=40,而局部变量再次使用 10 重新初始化并添加 10,如 10+10=20。
现在你可以说,在每个过程调用中,局部变量都用某个值重新初始化,该值可能是 NULL 或其他值,就像在我的例子中,我提供了默认值 10。这意味着它将局部变量设置为值 10每个过程调用,而用户定义的变量则不然。
以上就是MySQL 中的用户定义变量与局部变量?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号