INSERTCHILDXML

ノート:

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

構文

目的

INSERTCHILDXMLは、ユーザー指定の値を、XPath式で指定したノードのターゲットXMLに挿入します。このファンクションと「INSERTXMLBEFORE」を比較してください。

  • XMLType_instanceは、XMLTypeのインスタンスです。

  • XPath_stringは、1つ以上の子ノードが挿入されるノードを1つ以上示すXPath式です。先頭にスラッシュを付けて絶対XPath_stringを指定したり、先頭のスラッシュを省略して相対XPath_stringを指定できます。先頭のスラッシュを省略した場合、相対パスのコンテキストは、デフォルトでルート・ノードに設定されます。

  • child_exprは、挿入する要素または属性のノードを1つ以上指定します。

  • value_exprは、挿入されるノードを1つ以上指定するXMLTypeのフラグメントです。これは文字列に変換する必要があります。

  • オプションのnamespace_stringは、XPath_stringのネームスペース情報を提供します。このパラメータは、VARCHAR2型である必要があります。

関連項目:

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

次の例では、2番目の/Ownerノードを、「APPENDCHILDXML」の例で更新したウェアハウスの1つのwarehouse_specに追加します。

UPDATE warehouses
  SET warehouse_spec = INSERTCHILDXML(warehouse_spec, '/Warehouse/Building',
    'Owner', XMLType('<Owner>LesserCo</Owner>'))
  WHERE warehouse_id = 3;

SELECT warehouse_spec
  FROM warehouses  WHERE warehouse_id = 3;

WAREHOUSE_SPEC
----------------------------------------------------------------------------
<?xml version="1.0"?>
<Warehouse>
  <Building>Rented
    <Owner>Grandco</Owner>
    <Owner>LesserCo</Owner>
  </Building>
  <Area>85700</Area>
  <DockType/>
  <WaterAccess>N</WaterAccess>
  <RailAccess>N</RailAccess>
  <Parking>Street</Parking>
  <VClearance>11.5 ft</VClearance>
</Warehouse>