我正在研究我们得到的xml消息。我必须阅读xml并存储在4个不同的表中。
处理此问题的最佳方法是什么。让我们说如果更改了xml架构,则可能会添加新列或删除或重命名列等...
我们怎样才能做出松耦合。对XML或数据库的任何更改都不需要更改代码吗?
谢谢,
答案 0 :(得分:2)
不确定您打算如何使用存储在Oracle中的XML,但如果只是为了审计目的而存储,则可以将XML存储在CLOB字段中以及版本号和某些日期。在单独的参考表中,将xml版本号与其dtd(以及创建/修改日期)相关联。
答案 1 :(得分:1)
如果您使用的是Oracle 11G,则可以创建XMLTYPE变量 在PL / SQL过程中,然后您可以使用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 ..