XMLTABLE
Syntax
Description of the illustration xmltable.gif
XMLnamespaces_clause::=
Description of the illustration xml_namespaces_clause.gif
XMLTABLE_options::=
Description of the illustration xmltable_options.gif
XML_passing_clause::=
Description of the illustration xml_passing_clause.gif
XML_table_column::=
Description of the illustration xml_table_column.gif
Purpose
XMLTable
maps the result of an XQuery evaluation into relational rows and columns. You can query the result returned by the function as a virtual relational table using SQL.
The
XMLNAMESPACES
clause contains a set of XML namespace declarations. These declarations are referenced by the XQuery expression (the evaluatedXQuery_string
), which computes the row, and by the XPath expression in thePATH
clause ofXML_table_column
, which computes the columns for the entireXMLTable
function. If you want to use qualified names in thePATH
expressions of theCOLUMNS
clause, then you need to specify theXMLNAMESPACES
clause.XQuery_string
is a complete XQuery expression and can include prolog declarations.The
expr
in theXML_passing_clause
is an expression returning anXMLType
or an instance of a SQL scalar data type that is used as the context for evaluating the XQuery expression. You can specify only oneexpr
in thePASSING
clause without an identifier. The result of evaluating eachexpr
is bound to the corresponding identifier in theXQuery_string
. If anyexpr
that is not followed by anAS
clause, then the result of evaluating that expression is used as the context item for evaluating theXQuery_string
.-
The optional
COLUMNS
clause defines the columns of the virtual table to be created byXMLTable
.If you omit the
COLUMNS
clause, thenXMLTable
returns a row with a singleXMLType
pseudocolumn namedCOLUMN_VALUE
.The
datatype
is required unlessXMLTable
is used with XML schema-based storage ofXMLType
,datatype
. In this case, if you omitdatatype
, Oracle XML DB infers the data type from the XML schema. If the database is unable to determine the proper type for a node, then a default type ofVARCHAR2(4000)
is used.FOR
ORDINALITY
specifies that column is to be a column of generated row numbers. There must be at most oneFOR
ORDINALITY
clause. It is created as aNUMBER
column.-
The optional
PATH
clause specifies that the portion of the XQuery result that is addressed by XQuery expression string is to be used as the column content. If you omitPATH
, then the XQuery expressioncolumn
is assumed. For example:XMLTable(... COLUMNS xyz
is equivalent to
XMLTable(... COLUMNS xyz PATH 'XYZ')
You can use different
PATH
clauses to split the XQuery result into different virtual-table columns. The optional
DEFAULT
clause specifies the value to use when the
expression results in an empty sequence. Its
PATHexpr
is an XQuery expression that is evaluated to produce the default value.See Also:
Oracle XML DB Developer's Guide for more information on the
XMLTable
function, including additional examples, and on XQuery in generalExamples
The following example converts the result of applying the XQuery
'/Warehouse'
to each value in thewarehouse_spec
column of thewarehouses
table into a virtual relational table with columnsWater
andRail
: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