XMLTABLE関数は、XQuery を使用して表形式の出力を生成します。XMLTABLE関数は、暗黙的に入れ子にされたテーブルであり、先行するFROM句の項目と関連する可能性があります。XMLTABLEは、SQL/XML 2006 仕様の一部です。

Usage

XMLTABLE([<NSP>,] xquery-expression [<PASSING>] [COLUMNS <COLUMN>, ... )] AS name
COLUMN := name (FOR ORDINALITY | (datatype [DEFAULT expression] [PATH string]))

Parameters

  • オプションのXMLNAMESPACES句は、XQuery およびCOLUMNパス式で使用する名前空間を指定します;

  • XQuery-expression は有効な XQuery でなければなりません。XQuery によって返された各シーケンス項目は、COLUMNS句で定義された値の行を作成するために使用されます;

  • COLUMNSが指定されていない場合は、COLUMNS句があるのと同じです:COLUMNS OBJECT_VALUE XML PATH '.'これは、アイテム全体を XML 値として返します;

  • A FOR ORDINALITYカラムは整数として入力され、その値として1ベースのアイテム番号が返されます;

  • 各非順序列は、型を指定し、オプションでPATHおよびDEFAULT式を指定します;

  • PATHが指定されない場合、パスはカラム名と同じになります。

Syntax Rules

  • A FOR ORDINALITYカラムは1つだけ指定できます;

  • カラム名には重複があってはなりません。

Examples

1. PASSINGを使用すると、1 行 [1] が返されます:

SELECT * FROM XMLTABLE('/a' PASSING XMLPARSE(DOCUMENT '<a id="1"/>') COLUMNS id INTEGER PATH '@id') x;;

2. ネストされたテーブルとして:

SELECT x.* FROM t, XMLTABLE('/x/y' PASSING t.doc COLUMNS first STRING, second FOR ORDINALITY) x;;

Array Support

CData Virtuality Server はXMLTABLEの配列をサポートしています。これにより、配列として解釈できる任意の量のシリアルデータをロードすることができます:

SELECT
"xml_table.idColumn",
"xml_table.id",
"xml_table.key",
"xml_table.fixVersions"
FROM (
CALL "jira".invokeHTTP(
action => 'GET',
requestContentType => 'application/json',
endpoint => 'https://jira.your-domain.com/rest/api/latest/search?jql=sprint%20in%20openSprints()&#38;expands=issues'
)
) w,
XMLTABLE(XMLNAMESPACES('http://www.w3.org/2001/XMLSchema-instance' as "xsi"), '/root/issues' PASSING JSONTOXML('root', to_chars(w.result,'UTF-8'))
COLUMNS
"idColumn" FOR ORDINALITY,
"id" STRING PATH 'id',
"key" STRING PATH 'key',
"fixVersions" STRING[] PATH 'fields/fixVersions/name'
) "xml_table";;

Null Input

入力として NULL 値が渡されると、XMLTABLEは空の結果を返します:

SELECT *
FROM XMLTABLE(
'/root'
PASSING CAST(NULL AS XML)
COLUMNS i INTEGER
) x;;