mysql variable_MySQL:@variable与变量.有什么不同?

MySQL具有user-defined variables的概念.

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

它们前面带有@符号,如下所示:@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;这些“会话变量” “与特定于会话的用户定义变量无关.”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值