我需要定义一些游标,用于将元素级别的t-sql @xml变量拆分为不同的@xml(s)。
例如:
<root>
<element id=10/>
<element id=11/>
<element id=12/>
<element id=13/>
</root>
以便在tsql游标中获取以下值:
<root><element id=10/><element id=11/></root>
然后
<root><element id=12/><element id=13/></root>
等等n个元素pro游标循环。
答案 0 :(得分:2)
好吧,您可以使用内置函数来操作XML
。例如,以下语句:
DECLARE @XML XML = N'<root><element id="10"/><element id="11"/><element id="12"/><element id="13"/></root>'
SELECT ROW_NUMBER() OVER (ORDER BY T.c)
,T.c.query('.')
FROM @XML.nodes('root/element') T(c)
将为您提供保留elements
结构中所有顺序的所有XML
:
然后,您可以存储此结果并构建单独的较小XML
变量。
对于不同的元素,您可以使用*
,如下所示:
DECLARE @XML XML = N'<root><element1 id="10"/><element2 id="11"/><element3 id="12"/><element4 id="13"/></root>'
SELECT ROW_NUMBER() OVER (ORDER BY T.c)
,T.c.query('.')
FROM @XML.nodes('root/*') T(c)