0

Oracle に 2 つの列を持つテーブルがあります: CODIGO_DA_CONTA_PAIand CODIGO_DA_CONTA_FILHO(基本的には親と子を意味します)。

Parent CT-0000000000、Children および Children of Children については、別の列を更新する必要があります (ただし、今のところ、階層のみを選択しようとしています)。

Child に 1 つ以上の 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 に答える