Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Interroger un xml dans sql server 2008

Votre exemple XML n'a pas de Pages nœud. Cela signifie que lorsque le FROM clause est calculée, une jointure croisée est formée entre une liste de zéro lignes et une liste d'une ligne. Le produit résultant n'a pas de lignes, il n'y a donc rien SELECT ed, donc rien n'est INSERT éd.

Si vous souhaitez réellement insérer une ligne dans BookDetails pour chaque booksdetail node dans le xml entrant, vous devriez faire quelque chose comme

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

C'est-à-dire, broyez le xml entrant dans booksdetail nœuds, et extrayez chacun des .value s que vous voulez à partir de ces lignes.