Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Interrogazione di un xml in sql server 2008

L'xml di esempio non ha Pages nodo. Ciò significa che quando il FROM viene calcolata la clausola, viene formato un cross join tra un elenco di zero righe e un elenco di una riga. Il prodotto risultante non ha righe, quindi non c'è niente SELECT ed, quindi niente è INSERT ed.

Se vuoi effettivamente inserire una riga in BookDetails per ogni booksdetail node nell'xml in arrivo, dovresti fare qualcosa di simile

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

Cioè, distruggi l'xml in arrivo in booksdetail nodi ed estrarre ciascuno dei .value s vuoi da queste righe.