用户变量在会话中提供了最后分配的值

时间:2018-08-17 13:29:47

标签: mysql sql variables dynamic-queries

我们最近在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)

  • test-tool1
  • test-tool2

解决此问题的最佳方法是什么。

1 个答案:

答案 0 :(得分:0)

在每次在查询中使用变量之前,将其分配为null。用户会话问题将始终将变量值存储在Mysql服务器中,并导致这些问题。

SET @ToolType = null;

enter image description here