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 つだけです。