Сегодня я столкнулся с странной проблемой. См. Два основных модуля XQuery (это просто примеры, чтобы проиллюстрировать проблему). Первый, когда выполняется против ML7, создает 3 базы данных в базе данных, а второй - не создает. Может ли кто-нибудь объяснить, как эти два модуля отличаются в терминах транзакционной семантики? (Обратите внимание, что первый модуль использует function mapping)сделка с MarkLogic
Модуль 1
xquery version "1.0-ml";
declare variable $xml :=
<root>
<child>1</child>
<child>2</child>
<child>3</child>
<child>4</child>
</root>;
declare function local:create-child-method1($child as element(child))
{
try {
let $num := $child/text()
return
if($num eq 2) then
fn:error()
else
xdmp:document-insert($num, <sample>{$num}</sample>)
} catch ($ex) {
$ex
}
};
local:create-child-method1($xml/child)
Модуль 2
xquery version "1.0-ml";
declare variable $xml :=
<root>
<child>1</child>
<child>2</child>
<child>3</child>
<child>4</child>
</root>;
declare function local:create-child-method2($child as element(root))
{
try {
for $each-child in $child/child
let $num := $each-child/text()
return
if($num eq 2) then
fn:error()
else
xdmp:document-insert($num, <sample>{$num}</sample>)
} catch ($ex) {
$ex
}
};
local:create-child-method2($xml)