XML エクステンダーによって、XML 列データを置換して XML 文書全体を更新すること、 または指定した要素または属性の値を更新することができます。
タスクの概説:
重要: XML について使用可能にされた列を更新するとき、 XML エクステンダーは自動的にサイド表を更新して、変更が反映されるようにします。 しかし、対応する XML 要素または属性値を変更することにより、 XML 列に保管された元の XML 文書を更新するのではなく、 これらの表を直接更新するということはしないでください。 そのような更新は、データ不整合の問題を生じさせることがあります。
XML 文書を更新するには、以下のように行います。
例: キャストされた VARCHAR タイプから XMLVARCHAR タイプを更新します。 xml_buf は VARCHAR タイプとして定義されたホスト変数であると想定します。
UPDATE sales_tab VALUES('123456', 'Sriram Srinivasan', db2xml.XMLVarchar(:xml_buff))
例: 以下の例では、 XMLVarcharFromFile() 関数を使用して XML 文書を更新します。
UPDATE sales_tab set order = XMLVarcharFromFile('c:\dxx\samples\cmd\getstart.xml') WHERE sales_person = 'Sriram Srinivasan'
上記の例では、 XML オブジェクトが c:\dxx\samples\cmd\getstart.xml という名前のファイルから表 SALES_TAB 内の列 ORDER に更新されます。
XML エクステンダーに備わっている保管関数のリストについては、 表 10 を参照してください。
Update() UDF を使用して、文書全体を更新する代わりに特定の変更だけを指定します。 UDF を使用して、ロケーション・パス、およびそのロケーション・パスが示す、 置換する要素または属性の値を指定します。 (ロケーション・パス構文については、ロケーション・パスを参照してください。) XML 文書を編集する必要はありません。XML エクステンダーがユーザーに代わって変更を行います。
Update(xmlobj, path, value)
この例で、
例: 以下のステートメントは、Update() UDF を使用して、 <Customer> 要素の値を文字ストリング IBM に更新します。
UPDATE sales_tab set order = Update(order, '/Order/Customer/Name', 'IBM') WHERE sales_person = 'Sriram Srinivasan'