查询:
我需要创建一个XML(在Oracle中)并存储在表中(CLOB格式)。我在一个完整的行中获取XML而不是格式化的方式(在我检查的一些地方提到的Pretty Print方式)。
代码:
SELECT (
XMLElement("Organization",
XMLAttributes (ROWNUM AS "ROWNUM"),
XMLForest
(
'Test' col1 ,
'Test2' col2,
'Test3' col3
)
))
AS xmlResult
-- into v_xmlResult
FROM DUAL ;
现有结果:
<Organization ROWNUM="1"><COL1>Test</COL1><COL2>Test2</COL2><COL3>Test3</COL3></Organization>
预期结果:
<Organization ROWNUM="1">
<COL1>Test</COL1>
<COL2>Test2</COL2>
<COL3>Test3</COL3>
</Organization>
约束: 无法使用dbms_xmlgen.getxml,因为它是现有代码并且包含大量逻辑。
尝试解决方案:
select xml serialize(v_xmlResult) from dual;
如果有重复的问题(请回答此问题),请告诉我。
答案 0 :(得分:2)
尝试在最后添加EXTRACT('*')
:
SELECT (
XMLElement("Organization",
XMLAttributes (ROWNUM AS "ROWNUM"),
XMLForest
(
'Test' col1 ,
'Test2' col2,
'Test3' col3
)
)).EXTRACT('*')
AS xmlResult
-- into v_xmlResult
FROM DUAL ;
我曾经向某人提出过这个问题,这对他有用。不幸的是,我无法访问Oracle 10g并且无法检查它。希望它也适合你。
如果您无法修改代码,请尝试:
select v_xmlResult.EXTRACT('*') from dual;