我有一个查询:
SELECT DELETEXML(xmltype('<docGetResponse>
<histories>
<history>
<history/>
</history>
</histories>
<validations/>
</docGetResponse>'), '/docGetResponse/*[not(node())]')
FROM dual;
我的目标是删除docGetResponse下的所有EMPTY节点。在这种情况下,应该从上面保留xml
<docGetResponse></docGetResponse>
OR
<docGetResponse/>
但是查询给我错误: ORA-21500:内部错误代码,参数:[%s],[%s],[%s],[%s],[%s],[%s],[%s],[%s] < / p>
有什么想法吗?
答案 0 :(得分:0)
1)您有一些内部错误。
2)DELETEXML是已弃用的sql函数,应使用xmlquery替换它。
3)xquery的正确版本为'/docGetResponse/*[not(.//text())]'
select xmlquery('copy $doc := .
modify delete nodes $doc/docGetResponse/*[not(.//text())]
return $doc'
passing xmltype('<docGetResponse>
<histories>
<history>
<history/>
</history>
</histories>
<validations/>
<xxx>
<a><b><c>av</c></b></a>
</xxx>
</docGetResponse>') returning content) from dual;