我在Oracle中有一个包含两列的表:CODIGO_DA_CONTA_PAI
和CODIGO_DA_CONTA_FILHO
(基本上是指父和子)。
对于父级CT-0000000000,儿童和儿童,需要更新另一列(但目前我只是尝试选择层次结构)。
当Child有一个或多个Child时,它也出现在Parent列中。
当我运行下面显示的这个查询时,它会显示结果,但是当我尝试导出时,用SELECT子句括起来,或者向下滚动结果集时,错误消息编号为01436。
从我读到的内容来看,它似乎正在生成一个永远不会结束的结果集。
如何使其正常工作?我的代码是对的,还是我错过了什么?
SELECT
level AS nivel,
codigo_da_conta_pai,
codigo_da_conta_filho,
estrutura_ativa_filho
FROM conta c
START WITH c.codigo_da_conta_pai = 'CT-0000000000'
CONNECT BY PRIOR c.codigo_da_conta_filho = c.codigo_da_conta_pai
答案 0 :(得分:0)
在没有看到真实数据的情况下,很难分辨出导致循环的原因。你似乎从一个根(一个直接链接到根行的孩子)和对孩子的工作开始。在这种情况下,CONNECT BY条件应该是:
CONNECT BY PRIOR C.CODIGO_DA_CONTA_PAI = C.CODIGO_DA_CONTA_FILHO
或者可能是你有CODIGO_DA_CONTA_PAI和CODIGO_DA_CONTA_FILHO等于'CT-0000000000'的行?