使用XML将多个值插入表中

问题描述 投票:1回答:1

我需要将以下XML中的所有RoleTypeIDs(10,9)插入到表中。我按照下面的方法。它只插入第0个索引的XML条目。如何解决这个问题?

DECLARE @ResourcePermissionXML xml = '<ResourcePermission><RoleTypeID>10</RoleTypeID><RoleTypeID>9</RoleTypeID></ResourcePermission>'

DECLARE @ResourcePermissionList AS TABLE(RoleTypeID INT);

INSERT INTO @ResourcePermissionList(RoleTypeID)
   SELECT Entries.value('(RoleTypeID)[1]', 'INT') AS RoleTypeID
   FROM @ResourcePermissionXML.nodes('/ResourcePermission') AS PermissionEntries(Entries)

SELECT * FROM @ResourcePermissionList
sql sql-server xml
1个回答
2
投票

只需将您的INSERT声明更改为:

INSERT INTO @ResourcePermissionList(RoleTypeID)
   SELECT Entries.value('(.)[1]', 'INT') AS RoleTypeID
   FROM @ResourcePermissionXML.nodes('/ResourcePermission/RoleTypeID') AS PermissionEntries(Entries)

基本上,更改.nodes()中的XPath表达式,以便它返回每个<RoleTypeID> XML元素的XML fragements列表 - 然后您可以“到达”该XML元素并获取其值,并且由于XPath将返回所有<RoleTypeID>元素,因此所有价值观。

© www.soinside.com 2019 - 2024. All rights reserved.