2016-07-15 207 views
3

我得到這個SQL查詢:排序結果(XMLELEMENT(...)

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

我用這個來代替LISTAGG(列名,「」),因爲其結果將要超過極限varchar2(> 4000)。 現在我問自己是否可以像LISTAGG那樣排序結果。

所以,當有FERA,BAUT,CHECK_ID列的時候,我想讓它們返回作爲:BAUT,CHECK_ID,口交,...

我使用的是Oracle服務器,我的框架沒有分配讓我使用PL/SQL。

回答

2

您可以使用子查詢,只需在將列傳遞給xml函數之前對列進行排序即可。簡單的解決方案。

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

顯然......哦,上帝,我是一個白癡...謝謝你的替代 – Puddle