Oracle xml的递归层次查询
要使用dynatree(),我希望结果是下面的xml格式,但结果不是我想要的。 动态树需要第二个来组织树 有人能帮我吗Oracle xml的递归层次查询,oracle,recursion,hierarchy,Oracle,Recursion,Hierarchy,要使用dynatree(),我希望结果是下面的xml格式,但结果不是我想要的。 动态树需要第二个来组织树 有人能帮我吗 SELECT XMLELEMENT("div",xmlattributes('tree' AS "id"), (SELECT DBMS_XMLGEN.getXMLType( DBMS_XMLGEN.newContextFromHierarchy(' SELECT LEVEL, case
SELECT
XMLELEMENT("div",xmlattributes('tree' AS "id"),
(SELECT DBMS_XMLGEN.getXMLType(
DBMS_XMLGEN.newContextFromHierarchy('
SELECT LEVEL,
case
when CONNECT_BY_ISLEAF = 0 then
XMLELEMENT("ul", XMLELEMENT("li", xmlattributes(empno AS "id"), ename))
when CONNECT_BY_ISLEAF = 1 then
XMLELEMENT("li", xmlattributes(empno AS "id"), ename)
end
FROM emp
START WITH mgr is null
CONNECT BY PRIOR empno = mgr '
)
) FROM DUAL
)) XMLDOC
FROM DUAL;
当前结果
<div id="tree"><ul>
<li id="7839">KING</li>
<ul>
<li id="7566">JONES</li>
<ul>
<li id="7788">SCOTT</li>
<li id="7876">ADAMS</li>
</ul>
<ul>
<li id="7902">FORD</li>
<li id="7369">SMITH</li>
</ul>
</ul>
<ul>
<li id="7698">BLAKE</li>
<li id="7499">ALLEN</li>
<li id="7521">WARD</li>
<li id="7654">MARTIN</li>
<li id="7844">TURNER</li>
<li id="7900">JAMES</li>
</ul>
<ul>
<li id="7782">CLARK</li>
<li id="7934">MILLER</li>
</ul>
</ul>
</div>
嗨,把你的案例逻辑颠倒过来,我测试了一下,发现它在工作
SELECT
-- XMLELEMENT("ul",null,
(SELECT DBMS_XMLGEN.getXMLType(
DBMS_XMLGEN.newContextFromHierarchy('
SELECT LEVEL,
case
when CONNECT_BY_ISLEAF = 1 then
XMLELEMENT("ul", XMLELEMENT("li", xmlattributes(empno AS "id"), ename))
when CONNECT_BY_ISLEAF = 0 then
XMLELEMENT("ul", XMLELEMENT("li", xmlattributes(empno AS "id"), ename), null)
end
FROM emp
START WITH mgr is null
CONNECT BY PRIOR empno = mgr '
)
) FROM DUAL
)
-- ) XMLDOC
FROM DUAL;
请检查您需要的输出是否与问题中指定的完全一致
根据我的说法,输出应如下所示:
<ul>
<li id="7839">KING</li>
<ul>
<li id="7566">JONES</li>
<ul>
<li id="7788">SCOTT</li>
<ul>
<li id="7876">ADAMS</li>
</ul>
</ul>
<ul>
<li id="7902">FORD</li>
<ul>
<li id="7369">SMITH</li>
</ul>
</ul>
</ul>
<ul>
<li id="7698">BLAKE</li>
<ul>
<li id="7499">ALLEN</li>
</ul>
<ul>
<li id="7521">WARD</li>
</ul>
<ul>
<li id="7654">MARTIN</li>
</ul>
<ul>
<li id="7844">TURNER</li>
</ul>
<ul>
<li id="7900">JAMES</li>
</ul>
</ul>
<ul>
<li id="7782">CLARK</li>
<ul>
<li id="7934">MILLER</li>
</ul>
</ul>
</ul>
国王
琼斯
斯科特
亚当斯
福特
史密斯
布莱克
艾伦
病房
马丁
特纳
詹姆斯
克拉克
米勒
检查并更新您是否需要这些数据。您拥有的表格数据是什么…?,即表格名称…数据是什么,…显示可用的数据…添加了表格创建脚本和数据插入脚本。您好,请确认您的问题是否已解决。
SELECT
-- XMLELEMENT("ul",null,
(SELECT DBMS_XMLGEN.getXMLType(
DBMS_XMLGEN.newContextFromHierarchy('
SELECT LEVEL,
case
when CONNECT_BY_ISLEAF = 1 then
XMLELEMENT("ul", XMLELEMENT("li", xmlattributes(empno AS "id"), ename))
when CONNECT_BY_ISLEAF = 0 then
XMLELEMENT("ul", XMLELEMENT("li", xmlattributes(empno AS "id"), ename), null)
end
FROM emp
START WITH mgr is null
CONNECT BY PRIOR empno = mgr '
)
) FROM DUAL
)
-- ) XMLDOC
FROM DUAL;
<ul>
<li id="7839">KING</li>
<ul>
<li id="7566">JONES</li>
<ul>
<li id="7788">SCOTT</li>
<ul>
<li id="7876">ADAMS</li>
</ul>
</ul>
<ul>
<li id="7902">FORD</li>
<ul>
<li id="7369">SMITH</li>
</ul>
</ul>
</ul>
<ul>
<li id="7698">BLAKE</li>
<ul>
<li id="7499">ALLEN</li>
</ul>
<ul>
<li id="7521">WARD</li>
</ul>
<ul>
<li id="7654">MARTIN</li>
</ul>
<ul>
<li id="7844">TURNER</li>
</ul>
<ul>
<li id="7900">JAMES</li>
</ul>
</ul>
<ul>
<li id="7782">CLARK</li>
<ul>
<li id="7934">MILLER</li>
</ul>
</ul>
</ul>