説明
この関数は、一連のXMLフラグメントを取得し、集約されたXMLドキュメントを返します。集約関数として使用できます。
構文
XMLAGG(XMLType_instance [ ORDER BY [list of: expr [ASC|DESC] [NULLS {FIRST|LAST}]] ])
パラメータの説明
| フィールド | 説明 |
|---|---|
| XMLType_instance | XMLType型データを指定します。XMLType列またはXMLTypeを返す式にすることができます。 |
| expr | ソート対象の値に対応する列名を指定します。 注意 数値型は列の位置情報として使用できません。例えば、 ORDER BY 1 という書式は1列目でソートするという意味ではありません。 |
| ASC | DESC | リストのソート方式を指定します。オプションです。
|
| NULLS {FIRST | LAST} | ソート後の expr 内の NULL 値の位置を指定します。オプションです。
|
戻り値のタイプ
XMLTypeデータ型を返します。
例
# 既に作成されているemployeesテーブル
obclient> SELECT * FROM EMPLOYEES;
+------+-----------+------+
| ID | LAST_NAME | SAL |
+------+-----------+------+
| 1 | CLARK | 2750 |
| 2 | KING | 5300 |
| 3 | MILLER | 1600 |
| 4 | ADAMS | 1400 |
+------+-----------+------+
4 rows in set
# XMLELEMENT関数を使用してXMLフラグメントを構築する
obclient> SELECT XMLELEMENT(EVALNAME LAST_NAME, SAL) AS "RESULT" FROM EMPLOYEES;
+------------------------+
| RESULT |
+------------------------+
| <CLARK>2750</CLARK>
|
| <KING>5300</KING>
|
| <MILLER>1600</MILLER>
|
| <ADAMS>1400</ADAMS>
|
+------------------------+
4 rows in set
# XMLAGGを使用して上記の結果をSAL順にソートし、集約して返す
obclient> SELECT XMLAGG(XMLELEMENT(EVALNAME LAST_NAME, SAL) ORDER BY SAL) AS "RESULT" FROM EMPLOYEES;
+----------------------------------------------------------------------------------+
| RESULT |
+----------------------------------------------------------------------------------+
| <ADAMS>1400</ADAMS>
<MILLER>1600</MILLER>
<CLARK>2750</CLARK>
<KING>5300</KING>
|
+----------------------------------------------------------------------------------+
1 row in set