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.