【发布时间】:2014-12-01 12:00:38
【问题描述】:
我必须将 xmltype 的变量存储到一个 clob 中。我正在使用 getclobval() 函数将 xml 转换为 clob。 但是,数据作为字符串存储在 clob 中,并且格式会丢失。 有什么方法可以在将 xmltype 转换为 clob 时保留 xml 格式?
select xmlelement(info,xmlelement(name,'Sankalp'),xmlelement(surname,'Patil')) into xml1 from dual;
dbms_output.put_line(xml1.getClobval);
输出:
<INFO><NAME>Sankalp</NAME><SURNAME>Patil</SURNAME></INFO>
我期望输出为:
<INFO>
<NAME>Sankalp</NAME>
<SURNAME>Patil</SURNAME>
</INFO>
感谢期待
【问题讨论】:
-
我们在谈论什么“格式化”?我假设文档中的原始空格?根据您的描述,听起来您是说当您将数据存储在 CLOB 列中时格式丢失,这意味着
getClobVal()函数正在返回一个包含您想要的格式的 CLOB。那准确吗?如果这就是你所说的,我会感到惊讶。XMLType变量是否来自表?如果是这样,该表如何存储 XML 数据(CLOB、二进制 XML、对象关系?) -
您需要编辑您的问题(并可能正确格式化编辑)。我看不出预期输出和实际输出之间有任何区别。您真的是从查询中构造 XMLType 吗?还是您将 XML 文件中的数据加载到 XMLType 中?
-
为什么你希望输出有额外的空格?您编写的查询似乎没有做任何事情来注入额外的空白,因此看起来没有任何空白需要维护。如果您在 SQL*Plus 会话中运行
SELECT语句(当然没有into xml1),您将获得一个没有多余空格的 XML 文档。 -
xmldata 由 xmlelement 函数动态生成,如我在示例代码中所示。
-
如果使用 xmltype 数据类型创建列,则输出将以正确的 xml 格式存储。再次总结一下,我想使用 xmltype 函数生成 xml,将其存储为 clob,当下游应用程序读取此 clob 时,它应该具有 xml 格式。
标签: xml clob oracle11gr2 xmltype