EXPLAIN PLAN FOR SELECT *
FROM (SELECT A.*
FROM RES_TREE A,
(SELECT DISTINCT A.PATH
FROM RES_TREE A, DOMAIN_OBJECT B, USER_DOMAIN_FUNC C,RES_TREE D
WHERE A.NODE_ID = B.NODE_ID
AND B.DOMAIN_ID = C.DOMAIN_ID
AND B.INCLUDE_SUBNODE = '1'
AND C.OPR_ID = :2) B
WHERE A.PATH LIKE B.PATH || '%'
UNION
SELECT A.*
FROM RES_TREE A, DOMAIN_OBJECT B, USER_DOMAIN_FUNC C
WHERE A.NODE_ID = B.NODE_ID
AND B.DOMAIN_ID = C.DOMAIN_ID
AND B.INCLUDE_SUBNODE = '0'
AND C.OPR_ID = :1
UNION
SELECT DISTINCT A. *
FROM RES_TREE A
START WITH NODE_ID IN (SELECT DISTINCT NODE_ID
FROM DOMAIN_OBJECT B, USER_DOMAIN_FUNC C
WHERE B.DOMAIN_ID = C.DOMAIN_ID
AND C.OPR_ID = :3)
CONNECT BY PRIOR NODE_ID_UP = NODE_ID)
WHERE STATUS = '1'
START WITH NODE_ID_UP = -1
CONNECT BY PRIOR NODE_ID = NODE_ID_UP
ORDER SIBLINGS BY NODE_NAME DESC;
Warning: Entry/Exit code is optimized.Cannot restore context (UNWIND 22)
RES_TREE A,
*
ERROR at line 3:
ORA-00600: internal error code, arguments: [qctcte1], [0], [], [], [], [], [],
[]
哪位高手能帮忙写一个sql,避免触发这个bug.经过我测试减少一个union就可以了,但不知道sql怎么写。 |