Ответ 1
Попробуйте следующее утверждение:
SELECT
Pers.value('(ID)[1]', 'int') as 'ID',
Pers.value('(Name)[1]', 'Varchar(50)') as 'Name',
Pers.value('(LastName)[1]', 'varchar(50)') as 'LastName'
FROM
@YourXml.nodes('/Employees/Person') as EMP(Pers)
Это дает вам хорошее представление строк и столбцов этих данных.
И, конечно, вы можете продлить это, чтобы быть второй частью в инструкции INSERT:
INSERT INTO dbo.YourTargetTable(ID, Name, LastName)
SELECT
Pers.value('(ID)[1]', 'int') as 'ID',
Pers.value('(Name)[1]', 'Varchar(50)') as 'Name',
Pers.value('(LastName)[1]', 'varchar(50)') as 'LastName'
FROM
@YourXml.nodes('/Employees/Person') as EMP(Pers)
Готово - нет циклов или курсоров или каких-либо ужасных вещей, подобных тому, что нужно!: -)