我想动态创建一个元素,我正在尝试下面的查询,但它给了我这个错误:SQL16031N XQuery language feature using syntax "element {$first} { "Crockett" }, element last {"Johnson" } } })" is not supported
你能帮我解决吗?
XQUERY
let $first := concat('first','')
return (element book {
attribute isbn {"isbn-0060229357" },
element title { "Harold and the Purple Crayon"},
element author {
element {$first} { "Crockett" },
element last {"Johnson" }
}
})
答案 0 :(得分:0)
试试这个:
let $first := xs:QName('first')
return (element book {
attribute isbn {"isbn-0060229357" },
element title { "Harold and the Purple Crayon"},
element author {
element {$first} { "Crockett" },
element last {"Johnson" }
}
})
答案 1 :(得分:0)
似乎DB2 XQuery不支持动态计算名称的computed element constructors。如果可能的名称数量很少并且事先已知,您可以通过列出所有可能性来绕过该限制。由于DB2似乎也不支持switch
,我们必须使用if
/ else
级联来实现:
XQUERY
let $first := 'firstA'
return (element book {
attribute isbn {"isbn-0060229357" },
element title { "Harold and the Purple Crayon"},
element author {
if($first eq 'firstA')
then element firstA { "Crockett" }
else if($first eq 'firstB')
then element firstB { "Crockett" }
else if($first eq 'firstC')
then element firstC { "Crockett" }
else (),
element last {"Johnson" }
}
})