In einem Projekt, das eine MSSQL 2005-Datenbank verwendet, müssen alle Datenmanipulationsaktionen in einer Protokolltabelle protokolliert werden. Ein Feld in dieser Tabelle sollte die Zeile enthalten, bevor sie geändert wurde. Wir haben eine Menge Tabellen, also habe ich versucht, eine gespeicherte Prozedur zu schreiben, die alle Felder in einer Zeile einer Tabelle, die ihr übergeben wurde, sammelt, sie irgendwie verkettet und dann einen neuen Protokolleintrag mit diesen Informationen schreibt.Verketten von Zeilen aus verschiedenen Tabellen in einem Feld
Ich habe bereits versucht mit FOR XML PATH und es hat funktioniert, aber der Client mag nicht die XML-Notation, sie wollen ein CSV-Feld.
Hier ist, was ich mit FOR XML PATH hatte:
DECLARE @foo varchar(max);
SET @foo = (SELECT * FROM table WHERE id = 5775 FOR XML PATH(''));
Die Werte für „Tisch“, „id“ und der tatsächlichen ID (hier: 5775) über den Aufruf der gespeicherten später übergeben würde, Verfahren.
Gibt es eine Möglichkeit, dies ohne XML-Notation zu tun und ohne im Voraus zu wissen, welche Felder von der SELECT-Anweisung zurückgegeben werden?