Oracle
 sql >> Database >  >> RDS >> Oracle

Utilizzare for loop dopo la clausola With in PL/SQL

Non è possibile accedere a un CTE al di fuori dell'intera dichiarazione. E non puoi accedere a singole parti di un CTE al di fuori della SELECT finale per un CTE.

Devi mettere il tutto CTE (compresa l'istruzione SELECT finale) in il ciclo del cursore:

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;