我需要从我的关系数据库中提取数据作为XML,并且我需要为每个提取的记录分配一个数字。我写了下面的XQuery ...有没有办法对提取的记录进行编号。
<myRecords> {
let $i := 0
for $Territories in collection("Northwind.dbo.Territories")/Territories
let $i := $i + 1
return
<territory rec_count="{$i}">
{$Territories/TerritoryDescription/text()}
</territory>
} </myRecords>
...我没有得到结果,我预计:
<myRecords>
<territory rec_count="1">Westboro</territory>
<territory rec_count="1">Bedford</territory>
<territory rec_count="1">Georgetown</territory>
…
记录数量没有增加。为什么?例如,您无法真正在XQuery中创建状态概念,例如您可能在Java或C#中创建XQuery状态概念。在某些情况下,您可以使用递归函数来模拟状态,但为了解决这个问题,有一个更简单的解决方案:您可以使用位置变量。这里的XQuery的:
<myRecords> {
for $Territories at $i in collection("Northwind.dbo.Territories")/Territories
return
<territory rec_count="{$i}">
{$Territories/TerritoryDescription/text()}
</territory>
} </myRecords>
而这里的(希望的)结果:
<myRecords>
<territory rec_count="1">Westboro</territory>
<territory rec_count="2">Bedford</territory>
<territory rec_count="3">Georgetow</territory>
…
其工作,非常感谢你。 – Siddhu 2012-07-09 04:06:40