0

我在 Oracle 中有一个表,它有两列:CODIGO_DA_CONTA_PAICODIGO_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

结果集

4

1 回答 1

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”?

于 2014-01-08T19:10:06.413 回答