如何在sql server存储过程中循环和解析xml参数

Ari*_*ian 13 xml sql-server-2005 linq-to-xml sql-server-2008

我想编写一个接受XML参数的存储过程,解析它的元素并将它们插入表中.这是我的XML:

我的XML

我想循环该参数(例如C#中的foreach),检索每个人,然后解析它的数据(ID,NAME,LASTNAME),将它们插入到包含3个字段的表中.

怎么办?

mar*_*c_s 45

试试这句话:

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)
Run Code Online (Sandbox Code Playgroud)

这为您提供了该数据的漂亮的行/列表示.

当然,您可以将其扩展为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)
Run Code Online (Sandbox Code Playgroud)

完成 - 没有循环或游标或任何可能需要的东西!:-)