Solo puede tener una declaración después del CTE. Sin embargo, puede definir CTE posteriores en función de uno anterior:
WITH t1 AS (
SELECT a, b, c
FROM table1
)
, t2 AS (
SELECT b
FROM t1
WHERE a = 5
)
SELECT *
FROM t2;
Dado que está intentando contar las filas y llenar un cursor de referencia desde el mismo conjunto de resultados, puede ser más apropiado realizar una de las siguientes acciones:
- crear una vista
- resultados temporales de la etapa en una tabla temporal
Finalmente, si la consulta es lo suficientemente simple, solo escríbala una vez para el conteo y nuevamente para el cursor. La simplicidad y la legibilidad triunfan sobre el principio DRY en este caso.