INSERTXMLBEFORE
ノート:
INSERTXMLBEFOREファンクションは、非推奨です。これは、下位互換性を保つためにのみサポートされています。そのかわりに、XQuery Updateを使用してください。詳細は、『Oracle XML DB開発者ガイド』を参照してください。
構文
目的
INSERTXMLBEFOREは、ユーザー指定の値を、XPath式で指定したノードの前のターゲットXMLに挿入します。このファンクションはINSERTXMLAFTERと似ていますが、ターゲット・ノードの後ではなく前に挿入します。このファンクションと「INSERTCHILDXML」を比較してください。
-
XMLType_instanceは、XMLTypeのインスタンスです。 -
XPath_stringは、1つ以上の子ノードが挿入されるノードを1つ以上示すXPath式です。先頭にスラッシュを付けて絶対XPath_stringを指定したり、先頭のスラッシュを省略して相対XPath_stringを指定できます。先頭のスラッシュを省略した場合、相対パスのコンテキストは、デフォルトでルート・ノードに設定されます。 -
value_exprは、挿入される1つ以上のノードと親ノード内での位置を定義するXMLTypeのフラグメントです。これは文字列に変換する必要があります。 -
オプションの
namespace_stringは、XPath_stringのネームスペース情報を提供します。このパラメータは、VARCHAR2型である必要があります。
関連項目:
このファンクションの詳細は、『Oracle XML DB開発者ガイド』を参照してください。
例
次の例は、INSERTCHILDXMLの例と似ていますが、この例では、INSERTCHILDXMLの例で追加された/Ownerノードの前に、3番目の/Ownerノードが追加されています。問合せの出力は読み取りやすいように整えられています。
UPDATE warehouses
SET warehouse_spec = INSERTXMLBEFORE(warehouse_spec,
'/Warehouse/Building/Owner[2]', XMLType('<Owner>ThirdOwner</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>ThirdOwner</Owner>
<Owner>LesserCo</Owner>