構文

XMLnamespaces_clause::=

|
注意: DEFAULT string句を1つのみ指定できます。 |
XMLTABLE_options::=

XML_passing_clause::=

XML_table_column::=

用途
XMLTableは、XQueryの評価結果をリレーショナル行および列にマップします。SQLを使用して、このファンクションで戻される結果を仮想リレーショナル表として問い合せることができます。
XMLNAMESPACES句には、XMLネームスペースの宣言が含まれます。これらの宣言は、XQuery式(評価されたXQuery_string)と、XML_table_columnのPATH句のXPath式で参照されます。XQuery式は行を計算し、XPath式はXMLTableファンクション全体の列を計算します。COLUMNS句のPATH式に修飾名を使用する場合は、XMLNAMESPACES句を指定する必要があります。
XQuery_stringは、完全なXQuery式で、プロローグ宣言を含むことができます。
XML_passing_clauseのexprは、XMLTypeまたはSQLスカラー・データ型のインスタンスを戻し、XQuery式を評価するためのコンテキストとして使用されます。PASSING句には、識別子を指定せずに1つのexprのみを指定できます。各exprの評価結果は、XQuery_stringの対応する識別子にバインドされます。exprの後にAS句が続かない場合、式の評価結果はXQuery_stringの評価用のコンテキスト項目として使用されます。
オプションのCOLUMNS句では、XMLTableで作成する仮想表の列を定義します。
COLUMNS句を指定しない場合、XMLTableは、COLUMN_VALUEという名前の単一のXMLType疑似列を戻します。
FOR ORDINALITYは、生成された行番号の列になるように指定します。FOR ORDINALITY句は、最大で1つにする必要があります。これは、NUMBER列として作成されます。
FOR ORDINALITY列以外の作成される各列について、列datatypeを指定する必要があります。XMLTypeまたは他の任意のデータ型を指定できます。
オプションのPATH句では、XQuery式の文字列でアドレス指定されるXQuery結果の部分を列の内容として使用するように指定します。PATHを指定しない場合、XQuery式のcolumnとみなされます。次に例を示します。
XMLTable(... COLUMNS xyz
これは、次の式と同じです。
XMLTable(... COLUMNS xyz PATH 'XYZ')
異なるPATH句を使用すると、XQuery結果を異なる仮想表の列に分割できます。
オプションのDEFAULT句では、PATH式の結果が空の順序の場合に使用する値を指定します。exprは、デフォルト値の生成用に評価するXQuery式です。
|
関連項目: 追加の例を含むXMLTableファンクションおよびXQueryの概要については、『Oracle XML DB開発者ガイド』を参照してください。 |
例
次の例では、warehouses表のwarehouse_spec列の各値にXQuery '/Warehouse'を適用した結果を、列WaterおよびRailのある仮想リレーショナル表に変換します。
SELECT warehouse_name warehouse,
warehouse2."Water", warehouse2."Rail"
FROM warehouses,
XMLTABLE('/Warehouse'
PASSING warehouses.warehouse_spec
COLUMNS
"Water" varchar2(6) PATH '/Warehouse/WaterAccess',
"Rail" varchar2(6) PATH '/Warehouse/RailAccess')
warehouse2;
WAREHOUSE Water Rail
----------------------------------- ------ ------
Southlake, Texas Y N
San Francisco Y N
New Jersey N N
Seattle, Washington N Y