XMLQUERY
構文
XML_passing_clause::=
目的
XMLQUERY
では、SQL文のXMLデータを問い合せることができます。このファンクションは、文字列リテラル、オプションのコンテキスト項目、および他のバインド変数としてXQuery式を取り、これらの入力値を使用してXQuery式の評価結果を戻します。
-
XQuery_string
は、プロローグを含む完全なXQuery式です。 -
XML_passing_clause
のexpr
は、XMLType
またはSQLスカラー・データ型のインスタンスを戻し、XQuery式を評価するためのコンテキストとして使用されます。PASSING
句には、識別子を指定せずに1つのexpr
のみを指定できます。各expr
の評価結果は、XQuery_string
の対応する識別子にバインドされます。expr
の後にAS
句が続かない場合、式の評価結果はXQuery_string
の評価用のコンテキスト項目として使用されます。expr
がリレーショナル列の場合、宣言された照合はOracle XML DBで無視されます。 -
RETURNING
CONTENT
は、XQuery式の評価結果がXML 1.0文書か、またはXML 1.0セマンティクスに準拠したドキュメント・フラグメントのいずれかであることを示します。 -
結果セットが空の場合、このファンクションは、SQL
NULL
値を戻します。NULL
ON
EMPTY
キーワードがデフォルトで実装されます。このキーワードは、意味を明確にするために示されます。
関連項目:
このファンクションの詳細は、『Oracle XML DB開発者ガイド』を参照してください。
例
次の文は、XML_passing_clause
のoe.warehouses
表のwarehouse_spec
列をコンテキスト項目として指定します。この文は、領域が50Kより大きいウェアハウスに関する特定の情報を戻します。
SELECT warehouse_name, EXTRACTVALUE(warehouse_spec, '/Warehouse/Area'), XMLQuery( 'for $i in /Warehouse where $i/Area > 50000 return <Details> <Docks num="{$i/Docks}"/> <Rail> { if ($i/RailAccess = "Y") then "true" else "false" } </Rail> </Details>' PASSING warehouse_spec RETURNING CONTENT) "Big_warehouses" FROM warehouses; WAREHOUSE_ID Area Big_warehouses ------------ --------- -------------------------------------------------------- 1 25000 2 50000 3 85700 <Details><Docks></Docks><Rail>false</Rail></Details> 4 103000 <Details><Docks num="3"></Docks><Rail>true</Rail></Details> . . .