用户变量在会话中给出最后一个赋值

yrwegjxp  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(371)

我们最近在mysql中发现了重新声明问题。如果在循环中重复调用查询或过程,它将保留最后的值。

SET @ToolType = 'test-Tool1';
SET @ToolType = (select Tool_type from IBP__Tool_type aa inner join IBP__xTool_set bb on aa.Tool_type_id=-1) ;
select @ToolType;

SET @ToolType = 'test-Tool1';
select @ToolType:=Tool_type from IBP__Tool_type aa inner join IBP__xTool_set bb on aa.Tool_type_id=-1;
select @ToolType; -- = OR :=

SET @ToolType = 'test-Tool2';
select Tool_type into @ToolType from IBP__Tool_type aa inner join IBP__xTool_set bb on aa.Tool_type_id=-1;
select @ToolType;

上面的代码将有结果:(当表中不存在-1时,因此输出在所有情况下都应为null)
无效的
测试工具1
测试工具2
解决这个问题的最佳方法是什么。

r6l8ljro

r6l8ljro1#

每次在查询中使用变量之前,将其赋值为null。用户会话问题总是将变量值存储在mysql服务器中并导致这些问题。

SET @ToolType = null;

相关问题