sql >> Base de Datos >  >> RDS >> Oracle

Usar bucle for después de la cláusula With en PL/SQL

No puede acceder a un CTE fuera de la declaración completa. Y no puede acceder a partes individuales de un CTE fuera del SELECT final para un CTE.

Tienes que poner el todo CTE (incluida la instrucción SELECT final) en el bucle del cursor:

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;