LeKuchen: INPUT XML in MSSQL

Beitrag lesen

Hallo zusammen,

der neue SQL 2005 unterstützt XML als Datentyp. Mittels einer Stored Procedure möchte ich XML-Fragmente in einer Datenbank speichern.

Das XML sieht wie folgt aus:

<document docid="1">
   <data>
      <abc />
      <cde />
      <efg />
   </data>
</document>

Das INPUT Statement (das obige XML-Dokument steht im XMLHandler zur Verfügung):

INSERT INTO docs (docid, docxml)
SELECT docid, cast(docxml as xml)
FROM OpenXML(@XMLHandler,'/document', 1)
WITH (docid int '@docid' ,
docxml xml 'data/child::*')

Das Problem ist, das nur das erste Fragment (erster Childnode: <abc />) in die Spalte gespeichert wird und nicht alle drei Fragmente.

Hat jemand dafür eine Lösung?

P.S.: Wenn ich den ganzen data-Knoten speichere mit der XPATH-Angabe 'data' geht es, aber ich möchte gerne nur die Childelemente von data in der Datenbankspalte ablegen...

Gruß
LeKuchen