用于在元素级别拆分 t-sql @xml 变量的游标
Cursor for spliting t-sql @xml variable on elements level
我需要定义一些游标来将元素级别的 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 个元素支持游标循环。
好吧,您可以使用内置函数来操作 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)
我需要定义一些游标来将元素级别的 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 个元素支持游标循环。
好吧,您可以使用内置函数来操作 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)