2016-07-15 8 views
3

bekam ich diese SQL-Abfrage:Ergebnis sortieren aus XMLAGG (XMLELEMENT (...)

 select rtrim(extract(xmlagg(xmlelement(e, column_name || ',')), 
     '/E/text()').getclobval(), ',') from all_tab_columns 
     where OWNER = 'TESTER' AND TABLE_NAME = 'H4_POSIT'; 

ich mit diesem statt LISTAGG (column_name, ''), da das Ergebnis die Grenze überschreiten wird varchar2 (> 4000). Nun frage ich mich, ob es möglich ist, das Ergebnis wie LISTAGG zu sortieren

Also wenn Spalten FERA, BAUT, CHECK_ID, ... Ich möchte, dass sie zurückgegeben werden wie: BAUT, CHECK_ID, FERA, ...

Ich benutze Oracle Server und mein Framework nicht allo Ich möchte mit PL/SQL arbeiten.

Antwort

2

Sie können eine Unterabfrage verwenden und die Spalten einfach sortieren, bevor Sie sie an die XML-Funktion übergeben. Eine einfache Lösung.

select rtrim(extract(xmlagg(xmlelement(e, column_name || ',')), 
'/E/text()').getclobval(), ',') from 
(select * from all_tab_columns 
where OWNER != 'TESTER' AND TABLE_NAME=upper('H4_POSIT')  
order by COLUMN_NAME); 
+0

Offensichtlich ... Oh Gott, ich bin ein Idiot ... Danke – Puddle