gpt4 book ai didi

sql - 在 XMLTYPE 列中插入子节点

转载 作者:行者123 更新时间:2023-12-02 17:34:53 24 4
gpt4 key购买 nike

我有一个简单的查询:

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;

我想做的是插入一个节点 <c>之后<b>节点 <a> 内但 Oracle 12c 抛出此错误:

ORA-19114: XPST0003 - error during parsing the XQuery expression: 
LPX-00801: XQuery syntax error at 'EOF'
5 -
- ^

我希望输出为:

NEWXCOL
-------------
<a>
<b>1</b>
<c>2</c/>
</a>

我尝试查看 Oracle Docs用于更换 appendChildXML并按照该示例进行操作,但只得到了错误。

我知道这是非常基本的,但我遗漏了一些明显的东西。请帮忙。

最佳答案

以下代码应该适用于 11 和 12(已弃用):

SELECT insertXMLafter(XMLType('<a><b>1</b><c>3</c></a>'),
'/a/b', XmlType('<c>2</c>'))
FROM dual;

使用新 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;

有关 XMLQuery 以及旧的已弃用函数的更多详细信息可以在此处找到: http://docs.oracle.com/database/121/ADXDB/app_depr_upd.htm#ADXDB6160

关于sql - 在 XMLTYPE 列中插入子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24824336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com