【发布时间】:2011-04-22 17:21:23
【问题描述】:
我想编写一个接受 XML 参数的存储过程,解析它的元素并将它们插入到表中。这是我的 XML:
我想循环输入该参数(例如 C# 中的 foreach),检索每个人,然后解析它的数据(ID、NAME、LASTNAME),然后将它们插入一个有 3 个字段的表中。
怎么做?
【问题讨论】:
标签: xml sql-server-2005 sql-server-2008 linq-to-xml
我想编写一个接受 XML 参数的存储过程,解析它的元素并将它们插入到表中。这是我的 XML:
我想循环输入该参数(例如 C# 中的 foreach),检索每个人,然后解析它的数据(ID、NAME、LASTNAME),然后将它们插入一个有 3 个字段的表中。
怎么做?
【问题讨论】:
标签: xml sql-server-2005 sql-server-2008 linq-to-xml
试试这个说法:
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)
完成 - 不需要循环或游标或任何可怕的东西! :-)
【讨论】:
<Person> 一个“行” <Employees> 下的元素)