Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Consultando um xml no sql server 2008


Seu xml de exemplo não tem um Pages nó. Isso significa que quando o FROM é computada, uma junção cruzada é formada entre uma lista de zero linhas e uma lista de uma linha. O produto resultante não tem linhas, então não há nada SELECT ed, então nada é INSERT ed.

Se você realmente deseja inserir uma linha em BookDetails para cada booksdetail node no xml de entrada, você deve fazer 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)

Ou seja, fragmente o xml recebido em booksdetail nós e extraia cada um dos .value s que você deseja dessas linhas.