IBM Books

管理およびプログラミングの手引き


XML データを更新する

XML エクステンダーによって、XML 列データを置換して XML 文書全体を更新すること、 または指定した要素または属性の値を更新することができます。

タスクの概説:

  1. XML 文書を XML 表に保管したことを確認して、取り出したいデータを決めます。
  2. DB2 表内のデータを更新するための方式 (キャスト関数または UDF) を選択します。
  3. 更新する XML 表および列を指定する SQL 照会を指定します。

重要: XML について使用可能にされた列を更新するとき、 XML エクステンダーは自動的にサイド表を更新して、変更が反映されるようにします。 しかし、対応する XML 要素または属性値を変更することにより、 XML 列に保管された元の XML 文書を更新するのではなく、 これらの表を直接更新するということはしないでください。 そのような更新は、データ不整合の問題を生じさせることがあります。

XML 文書を更新するには、以下のように行います。

以下の方式のいずれかを使用します。

デフォルト・キャスト関数を使用する
ユーザー定義タイプ (UDT) ごとに、 SQL 基本タイプを UDT にキャストするためのデフォルト・キャスト関数が存在します。 XML エクステンダーに備わっているキャスト関数を使用して、XML 文書を更新することができます。 表 9 は備わっているキャスト関数を示しており、 列 ORDER が XML エクステンダーに備わっている各種の UDT から作成されたと想定しています。

例: キャストされた VARCHAR タイプから XMLVARCHAR タイプを更新します。 xml_buf は VARCHAR タイプとして定義されたホスト変数であると想定します。

UPDATE sales_tab VALUES('123456', 'Sriram Srinivasan',
  db2xml.XMLVarchar(:xml_buff))

保管 UDF を使用する
XML エクステンダー UDT ごとに、 基本タイプ以外のリソースから DB2 にデータをインポートするために保管 UDF が存在します。 保管 UDF を使用して、XML 文書全体を置換することにより、それを更新することができます。

例: 以下の例では、 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 を参照してください。

XML 文書の特定の要素および属性を更新する方法:

Update() UDF を使用して、文書全体を更新する代わりに特定の変更だけを指定します。 UDF を使用して、ロケーション・パス、およびそのロケーション・パスが示す、 置換する要素または属性の値を指定します。 (ロケーション・パス構文については、ロケーション・パスを参照してください。) XML 文書を編集する必要はありません。XML エクステンダーがユーザーに代わって変更を行います。

Update(xmlobj, path, value)

この例で、

xmlobj
要素または属性の値が更新される XML 列の名前です。

path
更新される要素または属性のロケーション・パスです。 ロケーション・パス構文については、ロケーション・パスを参照してください。

value
更新される値です。

例: 以下のステートメントは、Update() UDF を使用して、 <Customer> 要素の値を文字ストリング IBM に更新します。

UPDATE sales_tab
       set order = Update(order, '/Order/Customer/Name', 'IBM')
   WHERE sales_person = 'Sriram Srinivasan'


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]