Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:sql_xml_xpath_oracle

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
prog:sql_xml_xpath_oracle [2018/03/21 22:50] – [Quellen] gpipperrprog:sql_xml_xpath_oracle [2018/03/21 22:55] (aktuell) – [XNL Baum erzeugen] gpipperr
Zeile 1: Zeile 1:
 +=====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:
 +<code sql>
 +
 +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
 +...
 +
 +</code>
 +
 +
 +Mehr demnächst
 +
 +=== XNL Baum erzeugen ===
 +
 +<code sql>
 +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'
 +</code>
 +
 +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
prog/sql_xml_xpath_oracle.txt · Zuletzt geändert: 2018/03/21 22:55 von gpipperr