我正在处理我们收到的 xml 消息。我必须阅读 xml 并存储在 4 个不同的表中。
处理此问题的最佳方法是什么。可以说,如果 xml 架构发生了变化,那么可能会添加新列,或者可能会删除或重命名列等...
我们如何才能使这种松散耦合。对 XML 或数据库的任何更改都不需要更改代码吗?
谢谢,
不确定您打算如何使用存储在 Oracle 中的 XML,但如果只是出于审计目的而存储,您可以将 XML 连同版本号和一些日期一起存储在 CLOB 字段中。在单独的参考表中,将 xml 版本号与其 dtd(以及创建/修改日期)相关联。
如果您使用的是 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..