环境是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;
答案 0 :(得分:0)
问题结果是局部变量@columnName与临时表中的ColumnName列之间存在冲突。