|
注意: XMLSEQUENCEファンクションは、非推奨です。これは、下位互換性を保つためにのみサポートされています。ただし、かわりにXMLTABLEファンクションを使用することをお薦めします。詳細は、「XMLTABLE」を参照してください。 |
構文

用途
XMLSEQUENCEには2つの書式があります。
1つ目の書式は、入力としてXMLTypeインスタンスを取り、XMLTypeにあるトップレベルのノードのVARRAYを戻します。この書式のかわりに、SQL/XML標準ファンクションXMLTableを使用すると効果的です。このファンクションを使用すると、SQLコードがより読みやすくなります。Oracle Database 10gリリース2より前のリリースでは、このリリースのXMLTableファンクションでより効果的に実行されるいくつかの機能を、XMLSequenceがSQLファンクションTABLEを使用して実行していました。
2つ目の書式は、入力としてREFCURSORインスタンスおよびオプションのXMLFormatオブジェクトのインスタンスを取り、カーソルの各行に対して、XMLSequence型としてXML文書を戻します。
XMLSEQUENCEはXMLTypeのコレクションを戻すため、このファンクションをTABLE句で使用して、コレクション値をネスト解除することで複数行にし、SQL問合せでの処理をさらに進めることができます。
例
次の例では、XMLSEQUENCEが複数の要素を持つXML文書をVARRAY型の単一要素ドキュメントに分割する方法を示しています。この例では、TABLEキーワードが、コレクションを副問合せのFROM句で使用できる表の値とみなすように、Oracle Databaseに指示しています。
SELECT EXTRACT(warehouse_spec, '/Warehouse') as "Warehouse" FROM warehouses WHERE warehouse_name = 'San Francisco'; Warehouse ------------------------------------------------------------ <Warehouse> <Building>Rented</Building> <Area>50000</Area> <Docks>1</Docks> <DockType>Side load</DockType> <WaterAccess>Y</WaterAccess> <RailAccess>N</RailAccess> <Parking>Lot</Parking> <VClearance>12 ft</VClearance> </Warehouse> 1 row selected. SELECT VALUE(p) FROM warehouses w, TABLE(XMLSEQUENCE(EXTRACT(warehouse_spec, '/Warehouse/*'))) p WHERE w.warehouse_name = 'San Francisco'; VALUE(P) ---------------------------------------------------------------- <Building>Rented</Building> <Area>50000</Area> <Docks>1</Docks> <DockType>Side load</DockType> <WaterAccess>Y</WaterAccess> <RailAccess>N</RailAccess> <Parking>Lot</Parking> <VClearance>12 ft</VClearance> 8 rows selected.