Oracle
 sql >> Base de données >  >> RDS >> Oracle

Utiliser la boucle for après la clause With en PL/SQL

Vous ne pouvez pas accéder à un CTE en dehors de l'ensemble de la déclaration. Et vous ne pouvez pas accéder à des parties individuelles d'un CTE en dehors du SELECT final pour un CTE.

Vous devez mettre le tout CTE (y compris l'instruction SELECT finale) dans la boucle du curseur :

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;