一条语句触发bug,请大家帮忙优化

[复制链接]
查看11 | 回复0 | 2009-2-3 14:04:30 | 显示全部楼层 |阅读模式
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怎么写。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行