我正在尝试使用以下查询:
SELECT EXTRACTVALUE (XMLTYPE (a.DEFINITION),'//SQL') str FROM TAB_A a WHERE NAME = 'ABC' ;
Here, a.DEFINITION is a clob that stores an XML document.
Sample XML data stored in "a.definition" column for the above query:
<?xml version="1.0" encoding="UTF-8"?>
<dataMart>
<name>ABC</name>
<element>
...
</element>
... more element tags
<SQL>
<![CDATA[select query here]]>
</SQL>
</dataMart>
当我运行查询时,我收到了令人讨厌的ORA-01706错误:用户函数结果值太大。
所以,我搜索了一个建议使用getClobVal()的解决方法。 使用getClobVal查询:
SELECT EXTRACT (XMLTYPE (a.DEFINITION),'//SQL/text()').getclobval() str FROM TAB_A a WHERE NAME = 'ABC' ;
现在,好处是ORA错误消失了。 但是,坏消息是无处不在,从上面的查询中提取出的SQL标记的SQL查询有重复的列条目! Like For eg:如果查询中的select查询应该导致: 从XYZ中选择a,b,c。 但是,结果看起来像这样: 从XYZ中选择a,b,c,b,c
我不知道附加的b,c出现在哪里! 我错过了什么或有没有人碰到过这个? 任何可能的原因/解决方法/解决方案总是非常感谢。