【问题标题】:User variable is giving last assigned values in a Session用户变量在会话中给出最后分配的值
【发布时间】:2018-08-17 13:29:46
【问题描述】:

我们最近在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 不存在于表中,所以输出在所有情况下都应该为空)

  • 测试工具1
  • 测试工具2

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

【问题讨论】:

  • 如果select没有返回任何值,它会保留该值。

标签: mysql sql variables dynamic-queries


【解决方案1】:

在每次查询中使用它之前将变量赋值为 null。 User Session 问题将始终将变量值存储在 Mysql 服务器中并导致这些问题。

SET @ToolType = null;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多