Ainda não me foi revelada o formato da query, mas é esperado a devolução de milhares (ou mais) de registos.
Não posso usar java, pq a empresa não o suporta.
Utilizando user objects, e xmlgen que referi no outro post resolve o assunto. Agora em termos de performance não sei se é o melhor, mas como é xml nativo do oracle, acredito que não haja problemas.
deixo um exemplo como está no livro que estiver a ler.
Livro :
http://www.lc.leidenuniv.nl/awcourse/or ... b12gen.htm
exemplo :
CREATE TABLE new_departments (
department_id NUMBER PRIMARY KEY,
department_name VARCHAR2(20)
);
CREATE TABLE new_employees (
employee_id NUMBER PRIMARY KEY,
last_name VARCHAR2(20),
department_id NUMBER REFERENCES new_departments
);
CREATE TYPE emp_t AS OBJECT(
"@employee_id" NUMBER,
last_name VARCHAR2(20)
);
/
CREATE TYPE emplist_t AS TABLE OF emp_t;
/
CREATE TYPE dept_t AS OBJECT(
"@department_id" NUMBER,
department_name VARCHAR2(20),
emplist emplist_t
);
/
qryCtx := dbms_xmlgen.newContext
('SELECT dept_t(department_id, department_name,
CAST(MULTISET
(SELECT e.employee_id, e.last_name
FROM new_employees e
WHERE e.department_id = d.department_id)
AS emplist_t)) AS deptxml
FROM new_departments d');
DBMS_XMLGEN.setRowTag(qryCtx, NULL);
-- Here is the resulting XML:
-- <ROWSET>
-- <DEPTXML DEPARTMENT_ID="10">
-- <DEPARTMENT_NAME>SALES</DEPARTMENT_NAME>
-- <EMPLIST>
-- <EMP_T EMPLOYEE_ID="30">
-- <LAST_NAME>Scott</LAST_NAME>
-- </EMP_T>
-- <EMP_T EMPLOYEE_ID="31">
-- <LAST_NAME>Mary</LAST_NAME>
-- </EMP_T>
-- </EMPLIST>
-- </DEPTXML>
-- <DEPTXML DEPARTMENT_ID="20">
-- ...
-- </ROWSET>
Obrigado pela tua participação,
espero que isto ajude quem precisa de trabalhar xml com oracle 9i
[[]]