ステートメント全体の外でCTEにアクセスすることはできません。また、CTEの最終的なSELECT以外では、CTEの個々の部分にアクセスすることはできません。
全体を配置する必要があります CTE(最後のSELECTステートメントを含む) into カーソルループ:
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;