我是xquery的新手,除了在线基础知识之外,我很难找到更多内容。我已有要更改的代码,但是我不知道如何在单个if-then语句中包含多个函数调用或变量分配。
说我有这个方块
if (fn:namespace-uri(.) = 'http://xmlns.oracle.com/communications/sce/dictionary/testNamespace'
and //tns:CreateSalesOrder/tns:ListOfSWIOrderIO/tns:SWIOrder/tns:OrderTypeCode/text() = 'Test Order'
and $isDefaultVersion)
then true()
else false()
如何在true()之后包含函数调用?
类似这样的东西,但我不知道确切的语法:
if (fn:namespace-uri(.) = 'http://xmlns.oracle.com/communications/sce/dictionary/testNamespace'
and //tns:CreateSalesOrder/tns:ListOfSWIOrderIO/tns:SWIOrder/tns:OrderTypeCode/text() = 'Test Order'
and $isDefaultVersion)
then true(), util:write-record('123','johndoe')
else false()
答案 0 :(得分:1)
您可以写:
if (...) then (true(), util:write-record('123','johndoe')) else ...
注意括号。
我从名字中怀疑util:write-record()
是一个有副作用的函数。具有副作用的函数在XQuery中非常棘手,您需要了解特定实现如何处理它们。查询优化器始终有可能更改评估的顺序,因此副作用会以意外的顺序发生,或者因为优化器决定不需要结果而根本不会发生特定的调用。