使用Oracle SQL生成嵌套XML
发布时间:2021-05-17 19:32:35 所属栏目:百科 来源:网络整理
导读:朋友们, 我正在使用Oracle 10g,我需要使用以下xml格式的SQL从表中生成结果: RESULTS ROW EMPNO7839/EMPNO ENAMEKING/EMPNO SUBROWS ROW EMPNO7369/EMPNO ENAMESMITH/EMPNO ... Rest of the EMP table records excluding KING /ROW /SUBROWS /ROW/RESULTS
|
朋友们, 我正在使用Oracle 10g,我需要使用以下xml格式的SQL从表中生成结果: <RESULTS>
<ROW>
<EMPNO>7839</EMPNO>
<ENAME>KING</EMPNO>
<SUBROWS>
<ROW>
<EMPNO>7369</EMPNO>
<ENAME>SMITH</EMPNO>
... Rest of the EMP table records
excluding KING
</ROW>
</SUBROWS>
</ROW>
</RESULTS>
规则是显示在外部行中选择的记录,子行应包含除外部行中显示的记录之外的所有其他记录.记录没有层次结构. 在上面的示例中,在外部行中选择了King,因此子行应包含来自emp的所有记录,不包括King. 这个查询给了我需要的结果集: select e.empno,e.ename,cursor(select empno,ename
from emp where empno <> 7839)
from emp e
where empno = 7839
但是,当我尝试使用以下方法从此生成XML时: select xmlelement("RESULTS",xmlagg(xmlelement("ROW",xmlelement("EMPNO",empno),xmlelement("ENAME",ename),cursor(SELECT xmlagg(xmlelement("SUBROWS",xmlelement("ROW",ename)
)
)
)
FROM emp
WHERE empno <> 7839
)
)
)
)
from emp
where empno = 7839
我收到以下错误: ORA-22902: CURSOR expression not allowed
22902. 00000 - "CURSOR expression not allowed"
*Cause: CURSOR on a subquery is allowed only in the top-level
SELECT list of a query.
我尝试过使用DBMS_XMLGEN: SELECT DBMS_XMLGEN.getXML('select empno,ename,ename
from emp
where empno <> 7839) as SUBROWS
from emp
where empno = 7839')
FROM dual
Whist以预期的格式输出XML,但它没有显示正确的元素名称. 任何帮助解决这个问题将非常感激. 提前致谢 这不起作用?select xmlelement("RESULTS",(SELECT xmlagg(xmlelement("SUBROWS",ename)
)
)
)
FROM emp
WHERE empno <> 7839
)
)
)
)
from emp
where empno = 7839 (编辑:黄山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐


