0

clobとして保存されたxmlドキュメントを含むテーブルがあります。

TabA
----
Name varchar2(30) (PK)
Definition clob
other attributes

注:「定義」は、XMLを格納するclob列です。一般的なデータ量:1500行。

私の要件は、ある種の調整を行い、XMLに変更が加えられた行のみを毎日処理し、新しいものとして入ってくる行を処理することです。新しく入った行を識別し、それらだけを処理するのは簡単で、名前に「マイナス」を付けることで実行できます。しかし、変更が加えられた既存の行のXMLを識別する良い方法はありますか?

例:XML内の要素が削除されたか、その属性が前日から変更された場合、その「名前」行を処理できるはずです。

表の典型的なXMLの例:

<?xml version="1.0" encoding="UTF-8"?>
<dataMart asOfDriver="EFFECTIVE_DATE" chainedData="false" classification="" convertUsingFxRate="false" coreEntityIndicator="false" createdAt="2011-12-22T17:41:11.002" createdBy="user1" description="" entitled="false" entitlementDriver="false" hierarchicalFlag="false" innerJoin="false" intent="Intermediate" lastUpdatedAt="2012-07-26T16:11:42.424" lastUpdatedBy="p459807" martType="SPOT" martUsage="Persistent" ownerRole="Meta Model SSC" preAggregatedData="false" referenceDataIndicator="false" retention="" rollupFunction="" staticAggregationOnly="false" status="ACTIVE" tags="">
<name>Name1</name>
<sources>
    <source isDefault="false" name="S1"></source>
</sources>
<rowType-mapping>
    <rowType identifier="0">
    <element alias="E1" name="E1" source="" sourceAlias="" sourceType="system" trackSource="false">
      <description localDescription="false"></description>
          <validationRule type="None"></validationRule>
          <mapping columnName="E1" function="" tableName="TABA"></mapping>
          <Opaque />
    </element>
    More element tags
    ...<element> </element>
    </rowType>
</rowType-mapping>
<parameters>
    <parameter filter="N" name="P1">
      <![CDATA[PM]]>
    </parameter>
</parameters>
</dataMart>

任意のポインタをいただければ幸いです。

4

2 に答える 2

0

トリガーr を使用して、変更されたアイテムを別のテーブルに記録することをお勧めします。特定の日のログ テーブルに記録されたものを処理します。

2 つの XML を比較する方法については、これを参照してください。

于 2012-09-06T18:30:36.137 に答える