我有一个查询,我正在使用DBMS_XMLGEN包在Oracle中生成XML。是否有一种简单的方法来抑制Oracle中集合的XML行标记?
作为一个例子,我使用的光标如下:
SELECT
A.NAME primaryName,
(CURSOR(SELECT B.NAME AS NAME FROM B WHERE B.ID=A.ID)) SYNONYMS
FROM
A
我有一个查询上下文,QTX,并设置查询到的上述用于该上下文。呼唤:
result := DBMS_XMLGEN.getXML(qryCtx);
让我几乎在那里我想,从生成的XML的观点:
<PRIMARYNAME>Main Name</PRIMARYNAME>
<SYNONYMS>
<SYNONYMS_ROW>
<NAME>Synonym1</NAME>
</SYNONYMS_ROW>
<SYNONYMS_ROW>
<NAME>Synonym2</NAME>
</SYNONYMS_ROW>
</SYNONYMS>
我真的很想做的是抑制SYNONYMS_ROW
标签。我也试过了(CAST(MULTISET(<query>
))并且有类似的结果
我知道我可以做一个CLOB搜索和替换,但它似乎应该有一个稍微简单或更好的工程方法(即,我应该定义所需的xsd并以某种方式使用它)我也可以完成一个完整的存储过程并根据需要使用游标构建标记,但是最好有一个单独的SQL语句来使用。任何建议
感谢尼克 - 原来,解决我所描述的问题,最简单的方法是使用XMLAGG函数和生成我的XML结果略有不同
我同意,使用xml *标记几乎总是最好的方法。不过,我确实想明确回答你的问题,以防万一你想坚持使用DBMS_XMLGEN包。 – Nick 2009-02-11 22:41:04