XMLTABLE関数は、XQuery を使用して表形式の出力を生成します。XMLTABLE関数は、暗黙的に入れ子にされたテーブルであり、先行するFROM句の項目と関連する可能性があります。XMLTABLEは、SQL/XML 2006 仕様の一部です。
Usage
XMLTABLE([<NSP>,] xquery-expression [<PASSING>] [COLUMNS <COLUMN>, ... )] AS nameCOLUMN := name (FOR ORDINALITY | (datatype [DEFAULT expression] [PATH string]))NSP の定義についてはXMLELEMENT を参照 - XMLNAMESPACES;
XMLQUERYもご参照ください。
See also XQuery Optimization.
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()&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;; |