Reputation: 33
id parent_id Name Text
0 ........... body_text
1 ..........0 text....... . something
2 ..........0 blank
3 ..........2 text ........ something
4 ........... info
5 ..........4 text ........ something
Who knows how to get the following xml format from the previous hierarchical table:
<?xml version "................."?>
<body_text>
<text>something</text>
<blank>
<text>something</text>
</blank>
</body_text>
<info>
<text>some</text>
</info>
The only know how to do part of this is and now that isn't working either:
select DBMS_XMLGEN.getXML(DBMS_XMLGEN.newcontextfromhierarchy('SELECT level,
XMLElement(evalname(Name), text))
from my_table t
START WITH id_parent is null
CONNECT BY PRIOR id = parent_id'))
FROM dual
Upvotes: 3
Views: 2917
Reputation: 27251
The query you have provided will give you result you are expecting. You just have a couple of syntactical errors. First. parent_id
and id_parent
column names have a different position of id
in your query. Make them the same. Second. remove last parenthesis )
from XMLElement(evalname(Name), text))
SQL> set long 300
SQL> create table t1 (id1, parent_id, Name1, Text) as(
2 select 0, null, 'body_text', null from dual union all
3 select 1, 0, 'text', 'something' from dual union all
4 select 2, 0, 'blank', null from dual union all
5 select 3, 2, 'text' , 'something' from dual union all
6 select 4, null, 'info', null from dual union all
7 select 5, 4, 'text', 'something' from dual
8 );
Table created
SQL> select DBMS_XMLGEN.getXML(DBMS_XMLGEN.newcontextfromhierarchy('SELECT level,
2 XMLElement(evalname(Name1), text)
3 from t1 t
4 start with parent_id is null
5 connect by prior id1 = parent_id')) xml
6 from dual
7 ;
xml
--------------------------------------------------------------------------------
<body_text>
<text>something</text>
<blank>
<text>something</text>
</blank>
</body_text>
<info>
<text>something</text>
</info>
SQL> select '<?xml version="1.0" ?>'
2 || chr(10)
3 || DBMS_XMLGEN.getXML(DBMS_XMLGEN.newcontextfromhierarchy('SELECT level,
4 XMLElement(evalname(Name1), text)
5 from t1 t
6 start with parent_id is null
7 connect by prior id1 = parent_id')) as xml
8 FROM dual
9 ;
XML
--------------------------------------------------------------------------------
<?xml version="1.0" ?>
<body_text>
<text>something</text>
<blank>
<text>something</text>
</blank>
</body_text>
<info>
<text>something</text>
</info>
Upvotes: 1