XML到Oracle数据库列映射

时间:2012-05-24 16:02:45

标签: c# xml oracle mapping xsd

我正在研究我们得到的xml消息。我必须阅读xml并存储在4个不同的表中。

处理此问题的最佳方法是什么。让我们说如果更改了xml架构,则可能会添加新列或删除或重命名列等...

我们怎样才能做出松耦合。对XML或数据库的任何更改都不需要更改代码吗?

谢谢,

2 个答案:

答案 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 ..