Sie können nur eine Anweisung nach dem CTE haben. Sie können jedoch nachfolgende CTEs basierend auf einem vorherigen definieren:
WITH t1 AS (
SELECT a, b, c
FROM table1
)
, t2 AS (
SELECT b
FROM t1
WHERE a = 5
)
SELECT *
FROM t2;
Angesichts der Tatsache, dass Sie versuchen, die Zeilen zu zählen und einen ref-Cursor aus derselben Ergebnismenge zu füllen, ist es möglicherweise sinnvoller, einen der folgenden Schritte auszuführen:
- Erstellen Sie eine Ansicht
- Stellen Sie temporäre Ergebnisse in eine temporäre Tabelle
Wenn die Abfrage einfach genug ist, schreiben Sie sie einfach einmal für die Zählung und noch einmal für den Cursor. Einfachheit und Lesbarkeit trumpfen in diesem Fall das DRY- Prinzip auf.