sql >> Base de Datos >  >> RDS >> Sqlserver

Consultando un xml en sql server 2008

Su xml de muestra no tiene Pages nodo. Esto significa que cuando el FROM se calcula la cláusula, se forma una unión cruzada entre una lista de cero filas y una lista de una fila. El producto resultante no tiene filas, por lo que no hay nada SELECT ed, así que nada es INSERT ed.

Si realmente desea insertar una fila en BookDetails para cada booksdetail nodo en el xml entrante, debe hacer algo como

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

Es decir, triture el xml entrante en booksdetail nodos y extraiga cada uno de los .value s desea de estas filas.