prog:sql_xml_xpath_oracle
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
prog/sql_xml_xpath_oracle.txt · Zuletzt geändert: 2018/03/21 22:55 von gpipperr