如何在if-then语句中包含多个函数调用或赋值

时间:2019-06-27 16:36:10

标签: xquery

我是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()

1 个答案:

答案 0 :(得分:1)

您可以写:

if (...) then (true(), util:write-record('123','johndoe')) else ...

注意括号。

我从名字中怀疑util:write-record()是一个有副作用的函数。具有副作用的函数在XQuery中非常棘手,您需要了解特定实现如何处理它们。查询优化器始终有可能更改评估的顺序,因此副作用会以意外的顺序发生,或者因为优化器决定不需要结果而根本不会发生特定的调用。