IBM Books

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

XML コレクション内のデータを更新する

XML エクステンダーによって、 XML コレクション表に保管されたタグのないデータを更新することができます。 XML コレクション表の値を更新することにより、XML 要素のテキスト、 または XML 属性の値を更新することになります。 さらに、更新によって、 複数出現の要素または属性からデータのインスタンスを削除することができます。

SQL の観点からは、要素または属性の値を変更することは更新操作であり、 要素または属性のインスタンスを削除することは削除操作です。 XML の観点からは、ルート element_node の要素テキストまたは属性値が存在する限り、 その XML 文書はまだ存在しているため、それは更新操作となります。

要件: XML コレクション内でデータを更新するときには、 以下の規則に従ってください。

要素および属性値を更新する

XML コレクションでは、要素テキストおよび属性値はすべてデータベース表内の列にマップされます。 列データがすでに存在しているか、または着信 XML 文書から分解されたものかに関係なく、 そのデータを通常の SQL 更新技法を使用して置き換えます。

要素または属性値を更新するには、SQL UPDATE ステートメント内に WHERE 文節を指定し、 DAD ファイルに指定された結合条件をそこに含めます。

たとえば次のようにします。

UPDATE SHIP_TAB
    set MODE = 'BOAT'
  WHERE MODE='AIR' AND PART_KEY in
    (SELECT PART_KEY from PART_TAB WHERE ORDER_KEY=68)

<ShipMode> 要素の値が SHIP_TAB 表で AIR から BOAT に更新されます。 キーは 68 です。

要素および属性のインスタンスを削除する

複数出現の要素または属性を除去することによって合成済み XML 文書を更新するには、 WHERE 文節を使用して、要素または属性値に対応するフィールド値を含む行を削除します。 先頭の element_node の値を含む行を削除しない限り、 要素の値の削除は XML 文書の更新とみなされます。

たとえば、以下の DELETE ステートメントでは、 その副次要素のいずれかの固有値を指定することにより <shipment> が削除されます。

DELETE from SHIP_TAB
   WHERE DATE='1999-04-12'

DATE 値を指定すると、その値に対応する行が削除されます。 合成済み文書には、最初に 2 つの <shipment> 要素が含まれていましたが、 現在は 1 つだけです。


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