Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Verwenden Sie die for-Schleife nach der With-Klausel in PL/SQL

Sie können nicht auf einen CTE außerhalb der gesamten Anweisung zugreifen. Und Sie können nicht auf einzelne Teile eines CTE außerhalb des endgültigen SELECT für einen CTE zugreifen.

Sie müssen das Ganze angeben CTE (einschließlich der abschließenden SELECT-Anweisung) in die Cursorschleife:

FOR R IN (WITH TMP1 AS (.....), 
               TMP2 AS (......), 
               TMP3 AS (......)
          SELECT DISTINCT ..... 
          FROM TMP1 
             JOIN temp2 ON ... 
             JOIN temp3 ON ... 
          WHERE .....)
LOOP
   -- here goes the code that processes each row of the query
END LOOP;