SQL Server generiert XML mit generischen Feldelementen

8

Ich versuche im Grunde umzukehren, was diese Frage verlangt ... SQL Server-Abfrage-XML-Attribut für einen Elementwert

Ich muss eine Ergebnismenge von "row" -Elementen erzeugen, die eine Gruppe von "field" -Elementen mit einem Attribut enthalten, das den Schlüssel definiert.

%Vor%

Ich habe eine Abfrage, die das zurückgibt ...

%Vor%

Verwendung von FOR XML PATH ('row'), ROOT ('resultset') in meiner SQL-Anweisung.

Was vermisse ich? Danke.

    
HenryC 20.08.2014, 18:58
quelle

3 Antworten

7

Es ist ein wenig in SQL Server beteiligt - das normale Verhalten ist das, was Sie sehen - die Spaltennamen werden als XML-Elementnamen verwendet.

Wenn Sie wirklich möchten, dass alle XML-Elemente gleich benannt werden, müssen Sie einen Code wie diesen verwenden:

%Vor%

Dies ist erforderlich, um sicherzustellen, dass der Spaltenname als name -Attribut für das <field> -Element verwendet wird und die leere Zeichenfolge erforderlich ist, damit der SQL-XML-Parser nicht über das name -Attribut verwirrt wird gehört zu welchem ​​Element ......

    
marc_s 20.08.2014, 19:11
quelle
1

Sie können dies tun, ohne dass Sie die Spalten als Konstanten angeben müssen, und Sie können auch select * verwenden. Es ist etwas komplizierter als die Antwort von marc_s und es wird sehr viel langsamer ausgeführt werden.

%Vor%

SQL Fiddle

Die Abfrage erstellt eine abgeleitete Tabelle, in der jede Zeile eine XML-Datei enthält, die ungefähr so ​​aussieht:

%Vor%

Diese XML wird dann mit nodes() und local-name(.) zerkleinert, um die gewünschte Form zu erstellen.

    
Mikael Eriksson 21.08.2014 05:58
quelle
-1

Ihre SELECT-Anweisung muss in etwa so aussehen

%Vor%     
Ahz 20.08.2014 19:11
quelle

Tags und Links