In SQL Server kann ich mehrere einfügen von Knoten in XML-Code aus einer Tabelle?
Möchte ich erzeugen XML-Code in eine gespeicherte Prozedur, basierend auf Daten in einer Tabelle.
Die folgende insert-erlaubt mir zu viele Knoten, aber Sie haben hart codiert, oder verwenden Sie Variablen (sql:variable):
SET @MyXml.modify('
insert
<myNode>
{sql:variable("@MyVariable")}
</myNode>
into (/root[1]) ')
So, ich könnte in einer Schleife durch jeden Datensatz in meiner Tabelle, die Werte die ich brauche in den Variablen, und führen Sie die obige Aussage.
Aber gibt es eine Möglichkeit, ich kann diese nur durch die Kombination mit einer select-Anweisung und die Vermeidung der Schleife?
Bearbeiten die ich verwendet habe SELECT FOR XML
ähnliche Sachen vor, aber ich finde es immer schwer zu Lesen, beim arbeiten mit einer Hierarchie von Daten aus mehreren Tabellen. Ich hatte gehofft, es wäre etwas mit den modify
wo die generierte XML-Datei ist expliziter und besser kontrollierbar.
InformationsquelleAutor tpower | 2008-09-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie versucht, nesting FÜR die XML-PATH-scalar-valued functions?
Mit dem nesting-Technik, können Sie die Bremse Ihres SQL in sehr überschaubare/lesbare Elementare Stücke
Haftungsausschluss: die folgenden, während in Anlehnung an ein Beispiel, hat sich nicht buchstäblich getestet
Einige Referenz-links für das Allgemeine Publikum
Die einfachste, niedrigste Ebene der verschachtelten Knoten Beispiel
Betrachten Sie den folgenden Aufruf
Let ' s sagen, hatte udfGetLowestLevelNestedNode_Specificdogname geschrieben worden war, ohne die FÜR die XML-PATH-Klausel, und für @NestedInput_SpecificDogName = 99 es gibt die Einzel-rowset-Rekord:
Aber mit der FÜR die XML-PATH-Klausel,
die benutzerdefinierte Funktion erzeugt folgende XML (das @ - Zeichen bewirkt, dass die SpecificDogNameId Feld zurückgegeben werden, wie ein Attribut)
Verschachteln von Benutzer-definierten Funktionen des XML-Typs
Benutzer-definierte Funktionen, wie die oben udfGetLowestLevelNestedNode_Specificdogname können verschachtelt werden, um eine leistungsstarke Methode zur Herstellung von komplexen XML.
Beispielsweise die Funktion
beim Aufruf als
produzieren könnten, die komplexe XML-Knoten (gegeben den entsprechenden zugrunde liegenden Daten)
Ab hier könnte man weiter arbeiten nach oben in der verschachtelten Struktur zu bauen, wie Komplex eine XML-Struktur, wie Sie bitte
beim Aufruf als
den udf produzieren könnten, die komplexere XML-Knoten (gegeben den entsprechenden zugrunde liegenden Daten)
InformationsquelleAutor 6eorge Jetson
Können Sie sagen, ein bisschen mehr darüber, was genau Sie planen zu tun.
Ist es einfach das generieren von XML-Daten basierend auf einem Inhalt der Tabelle
oder das hinzufügen einiger Daten aus der Tabelle in eine vorhandene xml-Struktur???
Gibt es tolle Serie von Artikeln auf das Thema XML im SQL-Server geschrieben von Jakob Sebastian, es beginnt mit der Grundlagen der Erzeugung von XML aus den Daten in der Tabelle
InformationsquelleAutor kristof
Verwenden sql:Spalte anstelle von sql:variable. Sie finden detaillierte info hier: http://msdn.microsoft.com/en-us/library/ms191214.aspx
InformationsquelleAutor Eugene