MySQL:@variable与变量有什么不同?

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL:@variable与变量有什么不同?

如何解决MySQL:@variable与变量有什么不同??
MysqL具有 用户定义变量 的概念。

它们是松散类型的变量,可以在会话的某处初始化,并保持其值直到会话结束。

它们前面带有一个@标志,如下所示:@var

您可以使用SET语句或在查询内部初始化此变量:

SET @var = 1
SELECT @var2 := 2
在中开发存储过程时MysqL,可以传递输入参数并声明局部变量:

DELIMITER //
CREATE PROCEDURE prc_test (var INT)
BEGIN

DECLARE  var2 INT;
SET var2 = 1;
SELECT  var2;

END;
//
DELIMITER ;
这些变量不带任何前缀。

过程变量和特定于会话的用户定义变量之间的区别在于,NULL每次调用该过程时都会将过程变量重新初始化,而特定于会话的变量则不会:

CREATE PROCEDURE prc_test ()
BEGIN

DECLARE var2 INT DEFAULT 1;
SET var2 = var2 + 1;
SET @var2 = @var2 + 1;
SELECT  var2, @var2;

END;
SET @var2 = 1;
CALL prc_test();
var2 @var2


2 2
CALL prc_test();
var2 @var2


2 3
CALL prc_test();
var2 @var2


2 4
如您所见,var2(过程变量)在每次调用过程时都会重新初始化,而@var2(会话特定的变量)则不会。

(除了用户定义的变量外,MysqL 还 具有一些预定义的“系统变量”,可以是“全局变量”,例如@@global.port或“会话变量”,例如@@session.sql_mode;这些“会话变量”与特定于会话的用户定义无关变量。)

解决方法
在另一个问题中,我发布了一个人告诉我,两者之间是有区别的:

@variable
和:

variable
在MySQL中。他还提到了MSSQL如何具有批处理范围,而MySQL如何具有会话范围。有人可以为我详细说明吗?

声明:地推任务网所有作品(图片、文字)均由用户自行上传分享,仅供网友学习交流。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
存储 自然语言处理 关系型数据库
MySQL 自定义变量并声明字符编码
MySQL 自定义变量并声明字符编码
58 1
|
3月前
|
存储 关系型数据库 MySQL
mysql 使用变量存储中间结果的写法
mysql 使用变量存储中间结果的写法
|
23天前
|
关系型数据库 MySQL 数据处理
企业级应用 mysql 日期函数变量,干货已整理
本文详细介绍了如何在MySQL8.0中使用DATE_FORMAT函数进行日期格式的转换,包括当日、昨日及不同时间段的数据获取,并提供了实际的ETL应用场景和注意事项,有助于提升数据处理的灵活性和一致性。
37 0
|
5月前
|
存储 SQL 关系型数据库
15. Mysql 变量的使用
15. Mysql 变量的使用
65 1
|
6月前
|
存储 关系型数据库 MySQL
【MySQL进阶之路 | 基础篇】变量
【MySQL进阶之路 | 基础篇】变量
|
5月前
|
存储 SQL 关系型数据库
MySQL数据库——存储过程-变量(系统变量、用户定义变量、局部变量)
MySQL数据库——存储过程-变量(系统变量、用户定义变量、局部变量)
310 0
|
5月前
|
存储 关系型数据库 MySQL
Mysql存储过程查询结果赋值到变量
Mysql存储过程查询结果赋值到变量
149 0
|
6月前
|
关系型数据库 MySQL
mysql 动态变量,可以在线修改
7.1.9.2 Dynamic System Variables
43 0
|
关系型数据库 MySQL
|
6月前
|
存储 SQL 关系型数据库
MySQL存储过程 if、case、while、loop、游标、变量、条件处理程序
MySQL存储过程 if、case、while、loop、游标、变量、条件处理程序
191 0