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]))
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;; |