我想编写一个接受XML参数的存储过程,解析它的元素并将它们插入表中。这是我的XML:
我想在那个参数中循环(比如c中的foreach),检索每个人,然后解析它的数据(id、name、lastname),将它们插入一个有3个字段的表中。
怎么能这么做?

最佳答案

尝试以下语句:

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)

完成-没有循环或光标或任何可怕的东西,像那样需要!-)

10-08 16:24