在函数签名不允许的情况下将空序列传递给函数时,我得到了令人惊讶的行为。查询控制台中的示例:
declare function local:test($in as xs:string) { "Tested" };
local:test( () )
Run Code Online (Sandbox Code Playgroud)
这将返回一个空序列而不是字符串“Tested”,就好像该函数根本没有运行一样。XQuery 处理器不应该因为函数签名指定了一个 xs:string 值而抛出错误吗?相比之下,如果我添加一个问号使 xs:string 为零或一,则该函数会按预期返回“已测试”:
declare function local:test($in as xs:string?) { "Tested" };
local:test( () )
Run Code Online (Sandbox Code Playgroud)
为什么在第一个代码示例中没有强制执行函数签名?
恭喜,您已获得“按功能映射”徽章!我们都会被咬一次。
https://docs.marklogic.com/guide/xquery/enhanced#id_55459
那里的例子完全涵盖了你的情况。因此,现在随着“BBFM”徽章自豪地装饰在您的胸前,您可以决定使用此功能来发挥您的优势,或在您的标题中将其关闭,如下所示:
declare option xdmp:mapping "false";
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
39 次 |
最近记录: |