2

取得したxmlメッセージに取り組んでいます。XML を読み取って 4 つの異なるテーブルに格納する必要があります。

これを処理する最良の方法は何ですか。XMLスキーマが変更された場合、新しい列が追加されるか、列が削除または名前変更される可能性があるとしましょう...

この疎結合をどのように行うことができるでしょうか。XML またはデータベースへの変更は、コードの変更を必要としませんか?

ありがとう、

4

2 に答える 2

2

一度 Oracle に格納された XML をどのように使用するつもりなのかわかりませんが、監査目的で格納するだけであれば、XML をバージョン番号といくつかの日付と共に CLOB フィールドに格納できます。別の参照テーブルで、xml バージョン番号をその dtd (および作成日/変更日) と関連付けます。

于 2012-05-24T16:19:15.410 に答える
1

Oracle 11G を使用している場合は、PL/SQL プロシージャで XMLTYPE 変数を作成し、extract() 関数を使用して、フィールドにする XML ドキュメントの部分のみを取得できます。

XMLTYPE 型の PL/SQL 変数を宣言した後、XMLTYPE.CREATEXML( ) 関数を使用して XMLTYPE 変数を作成します。

V_INPUT_XML  := XMLTYPE.CREATEXML(V_TAB.INPUT_MESSAGE);

extract() PL/SQL 関数は XMLTYPE を返します。私は getclobval() を使用して XMLTYPE を VARCHAR に変換しました。

--V_OUTPUT_XML is set by a result of the extract() function 
--on an XMLTYPE
V_OUTPUT_STR := v_output_xml.getclobval();

少なくともこれにより、設定しているフィールドへのパスが変更された場合にのみ PL/SQL を変更する必要があります。フィールド外の XML ドキュメントを変更しても (フィールドへの XPATH に影響を与えない限り)、PL/SQL を変更する必要はありません。

于 2012-05-24T16:19:28.120 に答える