使用XML向表中插入多个值

时间:2019-01-08 17:58:30

标签: sql sql-server xml

我需要将以下XML中的所有RoleTypeID s(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

1 个答案:

答案 0 :(得分: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片段列表-然后您可以“进入”该XML元素并获取其值,并且由于XPath将返回所有<RoleTypeID>元素,因此您将获得所有值。