2 Aralık 2021 Perşembe

XMLAGG

Giriş
İki kullanım amacı var
1. XML çıktı almak . XMLTYPE veya XMLELEMENT'lardan bir XML liste oluşturur. 
2. Birden fazla sütunu tek sütunda birleştirmek için

Örnek - XML Çıktı
Şöyle yaparız. XML tag'leri ORDER BY yapılabilir.
 -- Built XML from elements
  SELECT
    XMLAGG(
      XMLTYPE('<employee>' || ename || '</employee>')
      ORDER BY ename)
  FROM emp;
 
  # Result (single row):
  # <employee>ADAMS</employee><employee>ALLEN</employee>...
Örnek - XML Çıktı
Şöyle yaparız. XMLELEMENT FROM içindeki bir alana atıfta bulunur
SELECT XMLELEMENT('Emp', XMLATTRIBUTES('Sales Representative' AS "Title"),
       XMLAGG(XMLELEMENT('Name', full_name)))
FROM
  (
SELECT CONCAT ("FirstName", ' ', "LastName") AS full_name
 FROM ...
 WHERE ...
 ORDER BY 1) AS subq;
_______________________________________________________________________________

<Emp Title="Sales Representative">
  <Name>Anne Dodsworth</Name>
  <Name>Janet Leverling</Name>
  <Name>Margaret Peacock</Name>
  <Name>Michael Suyama</Name>
  <Name>Nancy Davolio</Name>
  <Name>Robert King</Name>
</Emp>
Örnek - Sütun Birleştirme
Şöyle yaparız. XMLELEMENT FROM içindeki alanlara atıfta bulunur. Bunların değerini CONCAT ile birleştirir.
SELECT 
  RTRIM(XMLAGG(
    XMLELEMENT(E,CONCAT(CONCAT(F.Calltype, T.Useridentifiernumber),Fr.Functioncode)|| ',')) .Extract ('//text()'), 
  ',') # remove the last ,
 FROM ...

Hiç yorum yok:

Yorum Gönder