mysql中局部变量说法正确的是_用户定义变量与MySQL中的局部变量?

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

用户定义的变量以符号@开头。例如:@anyVariableName;

您可以通过两种方法来初始化用户定义的变量。您可以使用SET命令或使用SELECT查询。第一种方法如下:SET @anyVariableName=anyValue;

第二种方法如下:SELECT @anyVariableName :=anyValue;

如果未在SELECT查询中使用冒号(:),则它将其作为表达式求值。结果将为true或false:mysql> select @m=10;

以下是输出:+-------+

| @m=10 |

+-------+

|     1 |

+-------+

1 row in set (0.00 sec)

局部变量可以在存储过程,函数等中使用。它与DECLARE关键字一起使用。无需@前缀(如用户定义的变量)。

局部变量的语法如下。DECLARE yourVariableName dataType;

注意:局部变量和用户定义的变量之间的主要区别在于,每次调用存储过程时,每次都使用NULL值重新初始化局部变量,而特定于会话的变量或用户定义的变量未使用NULL重新初始化。一个用户设置的用户定义变量无法被其他用户看到。给定用户的任何会话变量在用户退出时都会被自动销毁。

这是带有存储过程的会话特定变量和局部变量的演示。使用本地变量和用户定义的变量创建存储过程的查询如下: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;

-> //

mysql> DELIMITER ;

现在设置用户定义变量的值。查询如下:mysql> SET @userVariable=10;

现在调用存储过程。在第一次调用中,用户定义的变量将为10 + 10 = 20,而局部变量将为10 + 10 = 20。

使用调用命令来调用存储过程:mysql> CALL sp_LocalAndUserDefinedVariableDemo();

以下是输出:+---------------+

| localVariable |

+---------------+

|            20 |

+---------------+

1 row in set (0.32 sec)

+---------------+

| @userVariable |

+---------------+

|            20 |

+---------------+

1 row in set (0.34 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)

在第三个调用中,用户定义的变量将保持值30并加10,例如30 + 10 = 40,而局部变量再次用10重新初始化并加10,例如10 + 10 = 20。

现在您可以说,在每个过程调用中,局部变量都使用某个值(可能为NULL或其他值)重新初始化,例如在我的情况下,我提供了默认值10。这意味着它将局部变量设置为10用户定义的变量不进行每个过程调用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值