2010-10-19 6 views
0

L'environnement est MySql 5.1.5.Question de syntaxe MySql concernant CONCAT et les chaînes

Ceci est un extrait d'une procédure stockée plus importante. Supposons que les variables sont correctement déclarées et définies avant que ce code soit atteint. Lorsque je lance la boucle suivante, quelque chose semble échouer dans le CONCAT. @columnName et @xmlQuery sont tous les deux VARCHAR. Lorsque je "SELECT @xmlQuery" à la fin de la procédure, il est {null}.

Si je remplace simplement:

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

avec:

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

puis-je obtenir une belle chaîne en arrière comme:

select xml_tag('result',null,null,concat(testtesttesttesttesttest 

comme on pouvait s'y attendre.

POURQUOI le CONCAT ne fonctionne-t-il pas avec la variable locale 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; 

Répondre

0

Le problème est avéré être un conflit entre la @columnName variable locale et la colonne ColumnName dans ma table temporaire.

Questions connexes