INSERTXMLAFTER

ノート:

INSERTXMLAFTERファンクションは、非推奨です。これは、下位互換性を保つためにのみサポートされています。そのかわりに、XQuery Updateを使用してください。詳細は、『Oracle XML DB開発者ガイド』を参照してください。

構文

目的

INSERTXMLAFTERは、属性のノードではないターゲット・ノードの直後に任意の種類の1つ以上のノードを挿入します。挿入の対象となるXML文書は、スキーマベースまたは非スキーマベースにすることができます。このファンクションはinsertXMLbeforeと似ていますが、ターゲット・ノードの前ではなく後に挿入します。

  • XMLType_instanceは、挿入のターゲット・ノードを指定します。

  • XPath_stringは、属性のノードを除く任意の0個以上のノードの位置をターゲット・ノード内で指定するXPath 1.0式です。XMLデータは、これらの各ノードの直後に挿入されます。つまり、指定された各ノードは、value_exprで指定されたノードの前に配置される兄弟ノードとなります。

  • value_exprは、挿入されるXMLデータです。任意の種類の1つ以上のノードを指定できます。ノードの順序は挿入後も保持されます。

  • オプションのnamespace_stringは、ターゲット・ノードの名前空間です。

関連項目:

このファンクションの詳細は、『Oracle XML DB開発者ガイド』を参照してください。

次の例は、INSERTCHILDXMLの例と似ていますが、この例では、INSERTCHILDXMLの例で追加された/Ownerノードの後に、3番目の/Ownerノードが追加されています。問合せの出力は読み取りやすいように整えられています。

UPDATE warehouses
  SET warehouse_spec = INSERTXMLAFTER(warehouse_spec,
    '/Warehouse/Building/Owner[1]', XMLType('<Owner>SecondOwner</Owner>'))
  WHERE warehouse_id = 3;

SELECT warehouse_name,
       EXTRACT(warehouse_spec, '/Warehouse/Building/Owner') "Owners"
  FROM warehouses
  WHERE warehouse_id = 3;

WAREHOUSE_NAME                      Owners
----------------------------------- ------------------------------
New Jersey                          <Owner>GrandCo</Owner>
                                    <Owner>SecondOwner</Owner>
                                    <Owner>LesserCo</Owner>