Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

XML abfragen in sql server 2008

Ihre Beispiel-XML hat keine Pages Knoten. Das heißt, wenn der FROM -Klausel berechnet wird, wird ein Kreuzjoin zwischen einer Liste mit null Zeilen und einer Liste mit einer Zeile gebildet. Das resultierende Produkt hat keine Zeilen, also gibt es kein SELECT ed, also ist nichts INSERT Aufl.

Wenn Sie tatsächlich eine Zeile in BookDetails einfügen möchten für jedes booksdetail -Knoten in der eingehenden XML-Datei, sollten Sie etwas wie tun

SELECT 
    ParamValues.PL.value('Pages[1]','int'),
    CAST(ParamValues.PLr.value('Description[1]','varchar(max)') AS text)
FROM 
    @xml.nodes('/booksdetail') as ParamValues(PL)

Das heißt, das eingehende XML in booksdetail zerkleinern Knoten und ziehen Sie jeden der .value heraus s Sie aus diesen Zeilen auswählen möchten.