SQL/XML (SQLX) : Generating XML using SQL
Oracle9i Release 2 includes functionality to support the emerging SQL/XML standard to simplify XML generation from SQL queries.
oracle miscconfigurationintermediate
by OracleDba
14 views
Oracle9i Release 2 includes functionality to support the emerging SQL/XML standard to simplify XML generation from SQL queries.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
CREATE TYPE emp_row AS OBJECT (
EMPNO NUMBER(4),
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2)
);
/
CREATE TYPE emp_tab AS TABLE OF emp_row;
/
CREATE TYPE dept_row AS OBJECT (
DEPTNO NUMBER(2),
DNAME VARCHAR2(14),
LOC VARCHAR2(13),
EMP_LIST emp_tab
);
/
SELECT SYS_XMLAGG (
SYS_XMLGEN(
dept_row(
d.deptno, d.dname, d.loc,
CAST(MULTISET(SELECT e.empno, e.ename, e.job, e.mgr, e.hiredate, e.sal, e.comm
FROM emp e
WHERE e.deptno = d.deptno) AS emp_tab)
),
SYS.XMLGENFORMATtYPE.createFormat('DEPT')
)
) AS "XML_QUERY"
FROM dept d
WHERE d.deptno = 10;
XML_QUERY
----------------------------------------------------------------------------------------------------
<?xml version="1.0"?>
<ROWSET>
<DEPT>
<DEPTNO>10</DEPTNO>
<DNAME>ACCOUNTING</DNAME>
<LOC>NEW YORK</LOC>
<EMP_LIST>
<EMP_ROW>
<EMPNO>7782</EMPNO>
<ENAME>CLARK</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>09-JUN-1981 00:00:00</HIREDATE>
<SAL>2450</SAL>
</EMP_ROW>
<EMP_ROW>
<EMPNO>7839</EMPNO>
<ENAME>KING</ENAME>
<JOB>PRESIDENT</JOB>
<HIREDATE>17-NOV-1981 00:00:00</HIREDATE>
<SAL>5000</SAL>
</EMP_ROW>
<EMP_ROW>
<EMPNO>7934</EMPNO>
<ENAME>MILLER</ENAME>
<JOB>CLERK</JOB>
<MGR>7782</MGR>
<HIREDATE>23-JAN-1982 00:00:00</HIREDATE>
<SAL>1300</SAL>
</EMP_ROW>
</EMP_LIST>
</DEPT>
</ROWSET>
1 row selected.
SQL>1234567891011121314151617181920212223242526
SELECT XMLELEMENT("name", e.ename) AS employee
FROM emp e
WHERE e.empno = 7782;
EMPLOYEE
----------------------------------------------------------------------------------------------------
<name>CLARK</name>
1 row selected.
SQL>
SELECT XMLELEMENT("employee",
XMLELEMENT("works_number", e.empno),
XMLELEMENT("name", e.ename)
) AS employee
FROM emp e
WHERE e.empno = 7782;
EMPLOYEE
----------------------------------------------------------------------------------------------------
<employee><works_number>7782</works_number><name>CLARK</name></employee>
1 row selected.
SQL>12345678910111213141516171819202122232425262728293031
SELECT XMLELEMENT("employee",
XMLATTRIBUTES(
e.empno AS "works_number",
e.ename AS "name")
) AS employee
FROM emp e
WHERE e.empno = 7782;
EMPLOYEE
----------------------------------------------------------------------------------------------------
<employee works_number="7782" name="CLARK"></employee>
1 row selected.
SQL>
SELECT XMLELEMENT("employee",
XMLATTRIBUTES(e.empno AS "works_number"),
XMLELEMENT("name",e.ename),
XMLELEMENT("job",e.job)
) AS employee
FROM emp e
WHERE e.empno = 7782;
EMPLOYEE
----------------------------------------------------------------------------------------------------
<employee works_number="7782"><name>CLARK</name><job>MANAGER</job></employee>
1 row selected.
SQL>12345678910111213141516
SELECT XMLELEMENT("employee",
XMLFOREST(
e.empno AS "works_number",
e.ename AS "name",
e.job AS "job")
) AS employee
FROM emp e
WHERE e.empno = 7782;
EMPLOYEE
----------------------------------------------------------------------------------------------------
<employee><works_number>7782</works_number><name>CLARK</name><job>MANAGER</job></employee>
1 row selected.
SQL>1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
SELECT XMLELEMENT("employee",
XMLFOREST(
e.empno AS "works_number",
e.ename AS "name")
) AS employees
FROM emp e
WHERE e.deptno = 10;
EMPLOYEES
----------------------------------------------------------------------------------------------------
<employee><works_number>7782</works_number><name>CLARK</name></employee>
<employee><works_number>7839</works_number><name>KING</name></employee>
<employee><works_number>7934</works_number><name>MILLER</name></employee>
3 rows selected.
SQL>
SELECT XMLAGG(
XMLELEMENT("employee",
XMLFOREST(
e.empno AS "works_number",
e.ename AS "name")
)
) AS employees
FROM emp e
WHERE e.deptno = 10;
EMPLOYEE
----------------------------------------------------------------------------------------------------
<employee><works_number>7782</works_number><name>CLARK</name></employee><employee><works_number>7839
</works_number><name>KING</name></employee><employee><works_number>7934</works_number><name>MILLER</
name></employee>
1 row selected.
SQL>
SELECT XMLELEMENT("employees",
XMLAGG(
XMLELEMENT("employee",
XMLFOREST(
e.empno AS "works_number",
e.ename AS "name")
)
)
) AS employees
FROM emp e
WHERE e.deptno = 10;
EMPLOYEE
----------------------------------------------------------------------------------------------------
<employees><employee><works_number>7782</works_number><name>CLARK</name></employee><employee><works_
number>7839</works_number><name>KING</name></employee><employee><works_number>7934</works_number><na
me>MILLER</name></employee></employees>
1 row selected.
SQL>1234567891011121314151617181920212223242526272829303132333435
SELECT XMLROOT(
XMLELEMENT("employees",
XMLAGG(
XMLELEMENT("employee",
XMLFOREST(
e.empno AS "works_number",
e.ename AS "name")
)
)
)
) AS employees
FROM emp e
WHERE e.deptno = 10;
EMPLOYEE
----------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="US-ASCII"?>
<employees>
<employee>
<works_number>7782</works_number>
<name>CLARK</name>
</employee>
<employee>
<works_number>7839</works_number>
<name>KING</name>
</employee>
<employee>
<works_number>7934</works_number>
<name>MILLER</name>
</employee>
</employees>
1 row selected.
SQL>123456789101112131415161718192021222324252627282930313233
SELECT XMLELEMENT("employees",
XMLAGG(
XMLELEMENT("employee",
XMLFOREST(
e.empno AS "works_number",
XMLCDATA(e.ename) AS "name")
)
)
) AS employees
FROM emp e
WHERE e.deptno = 10;
EMPLOYEE
----------------------------------------------------------------------------------------------------
<employees>
<employee>
<works_number>7782</works_number>
<name><![CDATA[CLARK]]></name>
</employee>
<employee>
<works_number>7839</works_number>
<name><![CDATA[KING]]></name>
</employee>
<employee>
<works_number>7934</works_number>
<name><![CDATA[MILLER]]></name>
</employee>
</employees>
1 row selected.
SQL>123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
SELECT XMLELEMENT("dept_list",
XMLAGG (
XMLELEMENT("dept",
XMLATTRIBUTES(d.deptno AS "deptno"),
XMLFOREST(
d.deptno AS "deptno",
d.dname AS "dname",
d.loc AS "loc",
(SELECT XMLAGG(
XMLELEMENT("emp",
XMLFOREST(
e.empno AS "empno",
e.ename AS "ename",
e.job AS "job",
e.mgr AS "mgr",
e.hiredate AS "hiredate",
e.sal AS "sal",
e.comm AS "comm"
)
)
)
FROM emp e
WHERE e.deptno = d.deptno
) "emp_list"
)
)
)
) AS "depts"
FROM dept d
WHERE d.deptno = 10;
depts
----------------------------------------------------------------------------------------------------
<dept_list>
<dept deptno="10">
<deptno>10</deptno>
<dname>ACCOUNTING</dname>
<loc>NEW YORK</loc>
<emp_list>
<emp>
<empno>7782</empno>
<ename>CLARK</ename>
<job>MANAGER</job>
<mgr>7839</mgr>
<hiredate>1981-06-09</hiredate>
<sal>2450</sal>
</emp>
<emp>
<empno>7839</empno>
<ename>KING</ename>
<job>PRESIDENT</job>
<hiredate>1981-11-17</hiredate>
<sal>5000</sal>
</emp>
<emp>
<empno>7934</empno>
<ename>MILLER</ename>
<job>CLERK</job>
<mgr>7782</mgr>
<hiredate>1982-01-23</hiredate>
<sal>1300</sal>
</emp>
</emp_list>
</dept>
</dept_list>
1 row selected.
SQL>Please to add comments
No comments yet. Be the first to comment!