構文
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式であり、プロローグ文字を含むことができます。XQuery_stringの値はXMLTableファンクションへの入力となります。つまり、このXQueryの結果は分解されてリレーショナル・データとして格納されます。
XML_passing_clause
のexpr
は、XMLType
またはSQLスカラー・データ型のインスタンスを戻し、XQuery式を評価するためのコンテキストとして使用されます。PASSING
句には、識別子を指定せずに1つのexpr
のみを指定できます。各expr
の評価結果は、XQuery_string
の対応する識別子にバインドされます。expr
の後にAS
句が続かない場合、式の評価結果はXQuery_string
の評価用のコンテキスト項目として使用されます。この句がサポートするのは値渡しのみで、参照渡しはサポートしません。したがって、BY
VALUE
キーワードはオプションであり、意味を明確にするためのものです。
オプションのRETURNING
SEQUENCE
BY
REF
句を指定すると、XQuery評価の結果が参照で戻されます。したがって、XML_table_column
句の中でソース・データの任意の部分を参照できます。
この句を指定しないと、XQuery評価の結果は値で戻されます。つまり、実際のノードへの参照のかわりに、ターゲット・ノードのコピーが戻されます。この場合、XML_table_column
句では戻されたコピーの中に含まれないデータを参照できません。特に、ソース・データ内でターゲット・ノードより前にあるデータは参照できません。
オプションのCOLUMNS
句は、XMLTable
により作成される仮想表の列を定義します。
COLUMNS
句を指定しない場合、XMLTable
は、COLUMN_VALUE
という名前の単一のXMLType
疑似列を戻します。
FOR
ORDINALITY
は、column
が生成された行番号の列になるように指定します。FOR
ORDINALITY
句は、最大で1つにする必要があります。これは、NUMBER
列として作成されます。
FOR
ORDINALITY
列以外の作成される各列について、列のデータ型を指定する必要があります。XMLType
または他の任意のデータ型を指定できます。
列のデータ型がXMLType
の場合は、XMLTYPE
句を指定します。オプションの(SEQUENCE)
BY
REF
句を指定すると、PATH
式のターゲットとなっているソース・データへの参照が列の内容として戻されます。それ以外の場合、column
にはターゲット・データのコピーが格納されます。
XMLType
データを参照で戻すことにより、列のPATH
式のターゲットの外にあるソース・データ内のノードをターゲットとするパスを持つ他の列を指定できるようになります。
列のデータ型がそれ以外のデータ型の場合は、datatype
を指定します。
オプションの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 'WaterAccess', "Rail" varchar2(6) PATH 'RailAccess') warehouse2; WAREHOUSE Water Rail ----------------------------------- ------ ------ Southlake, Texas Y N San Francisco Y N New Jersey N N Seattle, Washington N Y