Rac*_*cha 9 sql oracle xquery xmltype oracle12c
我有一个简单的查询:
WITH xtbl AS (
SELECT XMLTYPE ('<a><b>1</b></a>') AS xcol
FROM DUAL
)
SELECT XMLQUERY ('copy $tmp := .
modify
insert node <c>2</c>
into $tmp/a/b
return $tmp'
PASSING xcol
RETURNING CONTENT) AS newxcol
FROM xtbl;
Run Code Online (Sandbox Code Playgroud)
我想要做的是在节点内插入一个节点<c>,但Oracle 12c抛出了这个错误:<b><a>
ORA-19114: XPST0003 - error during parsing the XQuery expression:
LPX-00801: XQuery syntax error at 'EOF'
5 -
- ^
Run Code Online (Sandbox Code Playgroud)
我希望输出为:
NEWXCOL
-------------
<a>
<b>1</b>
<c>2</c/>
</a>
Run Code Online (Sandbox Code Playgroud)
我已经尝试在Oracle Docs中寻找替换appendChildXML并遵循该示例但只得到了错误.
我知道这是非常基本的,我错过了一些明显的东西.请帮忙.
以下代码应该适用于 11 和 12(已弃用):
SELECT insertXMLafter(XMLType('<a><b>1</b><c>3</c></a>'),
'/a/b', XmlType('<c>2</c>'))
FROM dual;
Run Code Online (Sandbox Code Playgroud)
使用新的 XMLQuery 语法的相同代码:
SELECT XMLQuery('copy $tmp := . modify insert node
<c>2</c>
after $tmp/a/b
return $tmp'
PASSING XmlType('<a><b>1</b><c>3</c></a>') RETURNING CONTENT)
FROM dual;
Run Code Online (Sandbox Code Playgroud)
有关 XMLQuery 以及旧的已弃用函数的更多详细信息,请访问:http : //docs.oracle.com/database/121/ADXDB/app_depr_upd.htm#ADXDB6160