=====Mit XML und xpath in einer Oracle SQL Query arbeiten=====
Über den Trick XML zu erzeugen kann zum Beispiel eine Baumstruktur in SQL erzeugt werden und wieder flach ausgeben werden.
Ein erstes Beispiel für XMLTABLE und einen xpatch:
select * from XMLTABLE( 'PivotSet/item' Passing (
select * from (
select schema_name
, (select count(*)
from dba_proxies p
where p.client = u.schema_name)
percount
from admin_users u
where U.USER_TYPE != 'PERSONAL'
group by schema_name )
pivot xml (
max(percount) for schema_name in (select schema_name from admin_users where USER_TYPE != 'PERSONAL' )
)
)
columns schemaname PATH '//column[@name="SCHEMA_NAME"]'
, counter PATH '//column[@name="MAX(PERCOUNT)"]'
) vals
SCHEMANAME , COUNTER
---------------------
T1 11
T2 26
...
Mehr demnächst
=== XNL Baum erzeugen ===
SELECT XMLELEMENT("proxy_rights_list",
XMLAGG (
XMLELEMENT("schema_name",
XMLATTRIBUTES(u.id AS "schema_id"),
XMLFOREST(
u.schema_name as "schema",
(SELECT XMLAGG(
XMLELEMENT("proxy_from",
XMLFOREST(
p.proxy as "prox_user"
)
)
)
FROM dba_proxies p
where p.client = u.schema_name
) "proxy_list"
)
)
)
).getClobVal() AS "user_schemas"
from admin_users u
where U.USER_TYPE != 'PERSONAL'
als Text ausgeben mit .getClobVal()!
----
==== Quellen ====
Oracle:
* https://docs.oracle.com/cd/B19306_01/appdev.102/b14288/exprn_xpathpredicates.htm
Web
* https://oracle-base.com/articles/misc/sqlxml-sqlx-generating-xml-content-using-sql