Twój przykładowy plik xml nie zawiera Pages
węzeł. Oznacza to, że gdy FROM
obliczana jest klauzula, tworzone jest sprzężenie krzyżowe między listą zerową a listą z jednym wierszem. Wynikowy produkt nie ma wierszy, więc nie ma nic SELECT
ed, więc nic nie jest INSERT
wyd.
Jeśli rzeczywiście chcesz wstawić jeden wiersz do BookDetails
dla każdego booksdetail
w przychodzącym pliku xml, powinieneś zrobić coś takiego
SELECT
ParamValues.PL.value('Pages[1]','int'),
CAST(ParamValues.PLr.value('Description[1]','varchar(max)') AS text)
FROM
@xml.nodes('/booksdetail') as ParamValues(PL)
To znaczy, zniszcz przychodzący plik xml do booksdetail
węzłów i wyciągnij każdy z .value
jakie chcesz z tych wierszy.