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.