带有动态索引的XQuery

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有动态索引的XQuery相关的知识,希望对你有一定的参考价值。

我试图在SQL Server中使用XQuery,但我需要索引是动态的:

这是我的查询:

SELECT 
    CAST(yourXML AS XML).value('(/integracao/item/NumPedido)[1]', 'VARCHAR(MAX)') NumPedido
FROM 
    #xml

我尝试过的:

SELECT 
    CAST(yourXML AS XML).value('(/integracao/item/NumPedido)[sql:variable("@index")]', 'VARCHAR(MAX)') NumPedido
FROM 
    #xml

但它返回此错误:

XQuery [#xml.yourXML.value()]:'value()'需要一个单例(或空序列),找到'xdt:untypedAtomic *'类型的操作数

有人能帮帮我吗?

答案

看看Mikael Eriksson in this link的这篇文章

declare @Index INT = 2
declare @XML XML = '
<Root>
    <Element>Hello</Element>
    <Element>World</Element>
</Root>
'
SELECT @xml.value ('(/Root/Element)[sql:variable("@Index")][1]', 'varchar(100)') 

[1]只是告诉SQL Server您需要单个节点的一种方法。

以上是关于带有动态索引的XQuery的主要内容,如果未能解决你的问题,请参考以下文章

从ViewPager android替换片段

如何在 Saxon 的 XQuery 中动态引用 XML 文件

xQuery,如何从带有孩子的节点获取文本?

在 for 循环中带有 if 条件的 XQuery

eXist DB & XQuery:带有属性的 xml-root 导致没有结果

处理屏幕旋转上的片段重复(带有示例代码)