Anda tidak dapat mengakses CTE di luar seluruh pernyataan. Dan Anda tidak dapat mengakses bagian individual dari CTE di luar SELECT akhir untuk CTE.
Anda harus meletakkan keseluruhan CTE (termasuk pernyataan SELECT akhir) ke lingkaran kursor:
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;