Dans un projet utilisant une base de données MSSQL 2005, nous devons consigner toutes les actions de manipulation de données dans une table de consignation. Un champ de cette table est censé contenir la ligne avant qu'elle ne soit modifiée. Nous avons beaucoup de tables alors j'essayais d'écrire une procédure stockée qui rassemblerait tous les champs dans une rangée d'une table qui lui a été donnée, les concaténerait d'une façon ou d'une autre et écrirait alors une nouvelle entrée de journal avec cette information.Concaténation de lignes de différentes tables dans un même champ
J'ai déjà essayé d'utiliser FOR XML PATH et cela a fonctionné, mais le client n'aime pas la notation XML, ils veulent un champ csv.
Voici ce que j'avais avec FOR XML PATH:
DECLARE @foo varchar(max);
SET @foo = (SELECT * FROM table WHERE id = 5775 FOR XML PATH(''));
Les valeurs de "table", "id" et l'identifiant réel (ici: 5775) plus tard être transmis via l'appel au stocké procédure.
Y at-il un moyen de le faire sans obtenir la notation XML et sans savoir à l'avance quels champs vont être retournés par l'instruction SELECT?