从数据库构建xml结构
标题可能有点误导,所以我将尝试描述这个问题 我需要使用SELECT语句从数据库中选择数据来构建XML。问题是,这应该是相当大的xml,其结构必须与另一个表中存储的xml一致。 有没有什么方法可以做到:从数据库构建xml结构,xml,oracle,Xml,Oracle,标题可能有点误导,所以我将尝试描述这个问题 我需要使用SELECT语句从数据库中选择数据来构建XML。问题是,这应该是相当大的xml,其结构必须与另一个表中存储的xml一致。 有没有什么方法可以做到: new_xml := some xml already existing in database modify new_xml with data from SELECT statement 我希望避免使用xmlelement等构建整个xml。。。 我知道我的描述可能有点混乱,所以如果有什么不
new_xml := some xml already existing in database
modify new_xml with data from SELECT statement
我希望避免使用xmlelement等构建整个xml。。。
我知道我的描述可能有点混乱,所以如果有什么不清楚的地方,我会尝试回答任何问题
谢谢您的帮助。如果每行的结构相同,您可以设置一个模板。例如:
SQL> create table source
2 (
3 id number,
4 cola varchar2(20),
5 colb number
6 );
Table created.
SQL>
SQL> insert into source values (1, 'teststr', 23898.234);
1 row created.
SQL> insert into source values (2, '', -9989.00);
1 row created.
SQL> insert into source values (3, 'test again', 0);
1 row created.
SQL> commit;
Commit complete.
SQL>
SQL>
SQL> with xml_template as (select xmltype(
2 '<root>
3 <somefield>asdas</somefield>
4 <somefield2>asdas</somefield2>
5 <typ>
6 <col1>.</col1>
7 </typ>
8 <col2>.</col2>
9 <col3>.</col3>
10 </root>') xml
11 from dual)
12 select updatexml(
13 xt.xml,
14 '/root/typ/col1/text()', s.id,
15 '/root/col2/text()', s.cola,
16 '/root/col3/text()', s.colb)
17 from xml_template xt
18 cross join source s;
UPDATEXML(XT.XML,'/ROOT/TYP/COL1/TEXT()',S.ID,'/ROOT/COL2/TEXT()',S.COLA,'/ROOT/
--------------------------------------------------------------------------------
<root>
<somefield>asdas</somefield>
<somefield2>asdas</somefield2>
<typ>
<col1>1</col1>
</typ>
<col2>teststr</col2>
<col3>23898.234</col3>
</root>
<root>
<somefield>asdas</somefield>
<somefield2>asdas</somefield2>
<typ>
<col1>2</col1>
</typ>
<col2/>
<col3>-9989</col3>
</root>
<root>
<somefield>asdas</somefield>
<somefield2>asdas</somefield2>
<typ>
<col1>3</col1>
</typ>
<col2>test again</col2>
<col3>0</col3>
</root>
所以updatexml只会填充每行不同的字段。u是说您想以XML格式从数据库中获取数据?我需要从一个表中导出数据,其中数据为数字、varchar等。键入另一个表,其中数据为XML格式。有50多个字段要导出,XML文档有很多节点是常量,所以它是一个相当大的文档。我想知道是否有一种方法可以通过使用XMLelement创建每个节点来避免构建整个xml文档。就像在填充了常量字段的现有XML文档中更改SELECT语句中所需的数据一样。