【问题标题】:XQuery with dynamic Index具有动态索引的 XQuery
【发布时间】:2018-03-05 16:10:35
【问题描述】:

我正在尝试在 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 *' 的操作数

有人可以帮帮我吗?

【问题讨论】:

  • 引用一个关闭:离题选项:寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括期望的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有清晰的问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example

标签: sql sql-server dynamic xquery


【解决方案1】:

Mikael Erikssonin 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 您需要单个节点的方法。

【讨论】:

  • 有效!!非常感谢... =D
猜你喜欢
  • 2018-06-24
  • 1970-01-01
  • 1970-01-01
  • 2013-07-17
  • 2023-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多