Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: Getting well-formed XML using SQL
I presume that you are testing this on Oracle 9204 or later as I believe
the same code on 9202
would give you the nested output. This change in behaviour was
deliberately introduced at 9202
for some performance reasons.
If a formatted document is required, use DBMS_XMLGEN.getXML instead as
the following
code sample illustrates :
CREATE TABLE temp_clob_tab(result CLOB);
DECLARE
qryCtx DBMS_XMLGEN.ctxHandle;
result CLOB;
BEGIN
qryCtx := dbms_xmlgen.newContext('SELECT ENAME as "Name", EMPNO as "ID" from
scott.emp');
INSERT INTO temp_clob_tab VALUES(result);
--close context
DBMS_XMLGEN.closeContext(qryCtx);
END;
/
set pages 100
select * from temp_clob_tab
/
Vicchu
John Haskins wrote:
>I'm writing to ask for help on Oracle's XML capabilities. The output I'm
>getting does not have CrLf sequences between values, so instead of the
>nicely formatted lists shown in Oracle's documentation, I'm getting output
>that while technically correct, is difficult to read and not really what we
>have come to expect.
>
>For example, this bit of code is from the Oracle docs, which show output
>that is nicely formatted with indents that reflect the data hierarchy.
>However, what I get is one long, continuous line of output per record.
>
>SQL> CREATE OR REPLACE TYPE emp_t AS OBJECT ("@EMPNO" NUMBER(4),
> 2 ENAME VARCHAR2(10));
> 3 /
>
>Type created.
>
>SQL>
>SQL> CREATE OR REPLACE TYPE emplist_t AS TABLE OF emp_t;
> 2 /
>
>Type created.
>
>SQL>
>SQL> CREATE OR REPLACE TYPE dept_t AS OBJECT ("@DEPTNO" NUMBER(2),
> 2 DNAME VARCHAR2(14),
> 3 EMP_LIST emplist_t);
> 4 /
>
>Type created.
>
>SQL>
>SQL> SELECT XMLElement("Department",
> 2 dept_t(deptno,
> 3 dname,
> 4 CAST(MULTISET(select empno,
> 5 ename
> 6 from scott.emp e
> 7 where e.deptno = d.deptno
> 8 )
> 9 AS emplist_t
> 10 )
> 11 )
> 12 ) AS deptxml
> 13 FROM scott.dept d
> 14 WHERE d.deptno = 10;
>
>DEPTXML
>----------------------------------------------------------------------------
>----
><Department><DEPT_T DEPTNO="10"><DNAME>ACCOUNTING</DNAME><EMP_LIST><EMP_T
>EMPNO=
>
>
>
>If you have any thoughts on how to produce more readable output using just
>SQL, I'd sure appreciate hearing them.
>
>
>
>
>
>
Received on Tue Jun 08 2004 - 02:20:25 CDT