【发布时间】:2021-05-03 10:17:23
【问题描述】:
假设有桌子
create table mytable
(val1 number(5),
val2 varchar2(10));
insert into mytable values (1,'XXX');
并要求生成以下 XML
<ns1:head>
<ns1:val1>1</val1>
<ns1:val2>XXX</val2>
</ns1:head>
运行起来很简单
select xmlelement("head",
xmlelement("val1",val1).extract('/*'),
xmlelement("val2",val2).extract('/*')
).extract('/*')
from mytable;
得到
<head>
<val1>1</val1>
<val2>XXX</val2>
</head>
问题在于,如果我尝试这样做,但要让每个节点在每个标签前都带有“ns1:”
select xmlelement("ns1:head",
xmlelement("ns1:val1",val1).extract('/*'),
xmlelement("ns1:val2",val2).extract('/*')
).extract('/*')
from mytable;
我收到 ORA-31011:XML 解析失败
也许我不知道 .extract('/*') 究竟是如何工作的,在我的情况下,“ns1:”可能会失败
Oracle 版本 10g
提前致谢!
标记
【问题讨论】: