2017-07-12 107 views
0

我运行在查询控制台下面的代码.xqy文件:但是查询控制台VS

for $leader in /wl:leader  
let $age := xs:integer(fn:days-from-duration(fn:current-date() - xs:date($leader/wl:dob/text())) div 365.25) 
return $age 

现在,无论是相似的,:

let $age := xs:integer(fn:days-from-duration(fn:current-date() - xs:date(/wl:leader/wl:dob/text())) div 365.25) 

return $age 

而且在.xqy文件中的以下当在查询控制台上运行时,我得到错误:arg1不是xs:duration类型的? 我知道错误是由'fn:current-date()'中的持续时间部分引起的,但为什么我不会面对与.xqy文件相同的问题?

+1

您没有运行相同的代码。这两个代码块是完全不同的,第二个显然只是一个子集。确保它们都是100%相同的代码,并在此提交。例如,可能原因是$领导者是空的。 – hunterhacker

+0

我在这个问题上做了一些修改。第二个代码片段工作正常,所以$领导者不是问题。谢谢:) – Yash

+0

得到了错误。感谢您的输入 – Yash

回答

1

正如亨特先生指出的那样,代码的差异解释了错误。

第二个示例一次将一个领导者传递给表达式。

第一个例子将所有的领导者都传递给期待单个领导者的表达。

希望有帮助,

+1

可能值得注意的是,在MarkLogic中,在XQuery中使用裸'/'与写'collection()/'实际上是一样的。换句话说,如果你编写'/ wl:leader',那将会选择文档数据库中任何地方的所有'wl:leader'根元素。 – grtjn

+0

噢,在第一个代码中,我将一个dob的整个序列一次。谢谢。 – Yash