請參見下面的查詢:如果XQuery(DB2)存在,則替換節點。有可能嗎?
select
xmlquery
(
'
if ($xml/foo/bar) then
transform copy $xml := $xml modify do replace $xml/foo/bar with <bar>some stuff</bar> return $xml
else
$xml
'
passing xmlparse(document '<foo><bar>something here</bar></foo>') as "xml"
)
from sysibm.sysdummy1
此查詢工作就好了:它取代了/富/酒吧節點和我完全滿意。如果/ foo/bar節點不存在,我只想要不發生任何事情。所以下面的查詢應該只返回未修改的XML:
select
xmlquery
(
'
if ($xml/foo/bar) then
transform copy $xml := $xml modify do replace $xml/foo/bar with <bar>some stuff</bar> return $xml
else
$xml
'
passing xmlparse(document '<foo>nothing here</foo>') as "xml"
)
from sysibm.sysdummy1
嗯...所以我想。實際上,DB2高興地告訴我:
SQL16085N XQuery「替換」表達式的目標節點無效。
也許我錯了關於如果我認爲和「then」-part在上面的兩個查詢中都執行的語法。所以我試圖交換then和else,因爲顯然DB2不應該嘗試執行then和else兩個部分。但這並沒有改變任何事情。
現在我很清楚困惑。是不是可以做我喜歡用XPath做的事情,因爲所有的路徑表達式都必須滿足它們是否被執行?或者我只是做錯了什麼?
可能對你有意思 - 所有DB2 XML HTTP可能性://amolnpujari.wordpress.com/2008/04/12/db2-native-xml/ –