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.