关于CONCAT和字符串的MySql语法问题

时间:2010-10-19 19:53:56

标签: stored-procedures mysql

环境是MySql 5.1.5。

这是来自较大存储过程的片段。假设在到达此代码之前正确声明和设置变量。

当我运行以下循环时,CONCAT中的某些内容似乎失败了。 @columnName和@xmlQuery都是VARCHAR。当我在过程结束时“SELECT @xmlQuery”时,它是{null}。

如果我只是替换:

SET @xmlQuery = CONCAT(@xmlQuery, @columnName);

使用:

SET @xmlQuery = CONCAT(@xmlQuery, 'test');

然后我得到一个很好的字符串,如:

select xml_tag('result',null,null,concat(testtesttesttesttesttest
人们期待的是

为什么CONCAT不能使用本地VARCHAR变量?

SET @xmlQuery = 'select xml_tag(''result'',null,null,concat(';

SET @columnCount = (SELECT COUNT(*) FROM ColumnNames);

WHILE (@rowIndex <= @columnCount) DO

  SELECT @columnName = ColumnName FROM ColumnNames WHERE ID = @rowIndex;

  SET @xmlQuery = CONCAT(@xmlQuery, @columnName);

  SET @rowIndex = @rowIndex + 1;

END WHILE;

1 个答案:

答案 0 :(得分:0)

问题结果是局部变量@columnName与临时表中的ColumnName列之间存在冲突。