MySQL 中的用户定义变量与局部变量?

MySQL 中的用户定义变量与局部变量?

用户定义的变量也称为会话特定变量。它是一种松散类型变量,可以在会话中的某个位置进行初始化,并包含用户定义变量的值,直到会话结束。

用户定义变量以符号 @ 为前缀。例如:

@anyVariableName;登录后复制

SET @anyVariableName=anyValue;登录后复制

SELECT @anyVariableName :=anyValue;登录后复制

mysql> select @m=10;登录后复制

+-------+ | @m=10 | +-------+ | 1 | +-------+ 1 row in set (0.00 sec)登录后复制

局部变量的语法如下。

DECLARE yourVariableName dataType;登录后复制

这里是会话特定变量和局部变量的演示与存储过程。创建带有局部变量和用户定义变量的存储过程的查询如下:

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

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

调用存储过程并检查示例输出:

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

现在你可以说,在每个过程调用中,局部变量都用某个值重新初始化,该值可能是 NULL 或其他值,就像在我的例子中,我提供了默认值 10。这意味着它将局部变量设置为值 10每个过程调用,而用户定义的变量则不然。

以上就是MySQL 中的用户定义变量与局部变量?的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!