Basic Oracle functions that allows you to manipulate xml data are:
- XMLAGG
- XMLCDATA
- XMLCOLATTVAL
- XMLCOMMENT
- XMLCONCAT
- XMLELEMENT
- XMLFOREST
- XMLPARSE
- XMLPI
- XMLQUERY
- XMLROOT
- XMLSEQUENCE
- XMLSERIALIZE
- XMLTABLE
- XMLTRANSFORM
Here is a simple example of an sql statement using xmlelement and xmlagg function:
select xmlelement
("People",
(select xmlagg(xmlelement ("Person",
xmlelement("Id", p.id),
xmlelement("FirstName", p.firstname),
xmlelement("LastName", p.lastname))
)
from person p)
).getClobVal()
from dual
If you are using registered xsd schemas and types, you can just use the following function:create or replace function from_people (p_people tro004_t) return clob is
v_schema_name varchar2(10) := 'People.xsd';
v_schema_elem varchar2(10) := 'People';
begin
RETURN xmltype(xmldata => p_people, schema => v_schema_name, element => v_schema_elem).getClobVal;
end;
/