Hãy thử câu lệnh này:
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)
Điều này cung cấp cho bạn một biểu diễn hàng / cột đẹp của dữ liệu đó.
Và tất nhiên, bạn có thể mở rộng điều đó thành phần thứ hai trong câu lệnh 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)
Xong - không cần vòng lặp hoặc con trỏ hoặc bất kỳ thứ khủng khiếp nào như vậy! :-)