Announcement

Collapse
No announcement yet.

FOR XML - Tags einfügen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • FOR XML - Tags einfügen

    Hi!
    Wie kann ich FOR XML verwenden um mir XML-Tags einzufügen für die keine Tabellenspalten existieren?

    Hier mal ein Beispiel:
    Code:
    SELECT 1 AS TAG,
    	NULL AS Parent,
    	tabelle.spalte1 AS [tabelle!1!spalte1!elementxsinil],
    	tabelle.spalte2 AS [tabelle!1!spalte2!elementxsinil]
    FROM tabelle FOR XML EXPLICIT
    liefert mir
    Code:
    <tabelle>
        <spalte1></spalte1>
        <spalte2></spalte2>
    </tabelle>
    Ich würde nun aber gern einen Unter-Tag einführen und dann weitere Spalten einfügen. Für den Unter-tag gibt es keine eigene Tabelle
    Also so ungefähr:
    Code:
    <tabelle>
        <spalte1></spalte1>
        <spalte2></spalte2>
        <NEUER_TAG>
              <spalteX></spaltex>
        </NEUER_TAG>
    </tabelle>
    Wie kann ich das am besten mit FOR XML realisieren?
    Irgendwelche Ideen?

    Danke schonmal
    Gruß
    bang

  • #2
    Hallo,

    >...für die keine Tabellenspalten existieren?

    die SELECT-Abfrage muss so erweitert werden, dass ein Sub-Select die zusätzlichen Daten bereits in der Erebnismenge bereitstellt:

    [highlight=SQL]
    USE tempdb
    GO
    CREATE TABLE dbo.TestTbl
    (
    id INT NOT NULL IDENTITY PRIMARY KEY,
    wert VARCHAR(9) NOT NULL
    )
    GO
    INSERT INTO dbo.TestTbl (wert) VALUES ('Eintrag 1');
    INSERT INTO dbo.TestTbl (wert) VALUES ('Eintrag 2');
    INSERT INTO dbo.TestTbl (wert) VALUES ('Eintrag 3');
    GO
    -- Eingeschachtelte Dummywerte generieren
    SELECT id, wert,
    (SELECT 'Zusatzwert' FOR XML RAW('Details'), ELEMENTS,TYPE,ROOT('BestellDetails'))
    FROM dbo.TestTbl
    FOR XML RAW('Testdaten'),
    ELEMENTS XSINIL,TYPE, ROOT('dbo.TestTbl');
    GO
    [/highlight]

    Das Beispiel liefert das folgende Ergebnis zurück:

    <div style="font-family: Consolas; font-size: 10pt; color: black; background: white;"><pre style="margin: 0px;"><span style="color: blue;">&lt;</span><span style="color: #a31515;">dbo.TestTbl</span><span style="color: blue;"> </span><span style="color: red;">xmlns:xsi</span><span style="color: blue;">=</span>"<span style="color: blue;">http://www.w3.org/2001/XMLSchema-instance</span>"<span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #a31515;">Testdaten</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #a31515;">id</span><span style="color: blue;">&gt;</span>1<span style="color: blue;">&lt;/</span><span style="color: #a31515;">id</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #a31515;">wert</span><span style="color: blue;">&gt;</span>Eintrag 1<span style="color: blue;">&lt;/</span><span style="color: #a31515;">wert</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #a31515;">BestellDetails</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #a31515;">Details</span><span style="color: blue;">&gt;</span>Zusatzwert<span style="color: blue;">&lt;/</span><span style="color: #a31515;">Details</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/</span><span style="color: #a31515;">BestellDetails</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &lt;/</span><span style="color: #a31515;">Testdaten</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #a31515;">Testdaten</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #a31515;">id</span><span style="color: blue;">&gt;</span>2<span style="color: blue;">&lt;/</span><span style="color: #a31515;">id</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #a31515;">wert</span><span style="color: blue;">&gt;</span>Eintrag 2<span style="color: blue;">&lt;/</span><span style="color: #a31515;">wert</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #a31515;">BestellDetails</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #a31515;">Details</span><span style="color: blue;">&gt;</span>Zusatzwert<span style="color: blue;">&lt;/</span><span style="color: #a31515;">Details</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/</span><span style="color: #a31515;">BestellDetails</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &lt;/</span><span style="color: #a31515;">Testdaten</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #a31515;">Testdaten</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #a31515;">id</span><span style="color: blue;">&gt;</span>3<span style="color: blue;">&lt;/</span><span style="color: #a31515;">id</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #a31515;">wert</span><span style="color: blue;">&gt;</span>Eintrag 3<span style="color: blue;">&lt;/</span><span style="color: #a31515;">wert</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #a31515;">BestellDetails</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #a31515;">Details</span><span style="color: blue;">&gt;</span>Zusatzwert<span style="color: blue;">&lt;/</span><span style="color: #a31515;">Details</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/</span><span style="color: #a31515;">BestellDetails</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&nbsp;&nbsp;&nbsp; &lt;/</span><span style="color: #a31515;">Testdaten</span><span style="color: blue;">&gt;</span></pre><pre style="margin: 0px;"><span style="color: blue;">&lt;/</span><span style="color: #a31515;">dbo.TestTbl</span><span style="color: blue;">&gt;</span></pre></div>

    Comment

    Working...
    X