253: Das rekursive Element des allgemeinen Tabellenausdrucks '%1!' weist mehrere rekursive Verweise

By Frank Kalis

Posted on Dez 2, 2010 von in 0 - 999

Fehlermeldung:
Meldung 253, Ebene 16, Status 1, Zeile 1
Das rekursive Element des allgemeinen Tabellenausdrucks '%1!' weist mehrere rekursive Verweise auf.

Ebene:
16.

Beschreibung:
Diese Fehlermeldung erscheint, wenn eine Common Table Expression mehr als einen rekursiven Verweis besitzt.

Auswirkungen:
Das SQL Statement kann zwar geparst werden, jedoch zur Laufzeit wird der Fehler ausgelöst.

Behebung:
Fehler der Ebene 16 sind Fehler, die vom Anwender hervorgerufen werden. Sie können und müssen vom Anwender korrigiert werden. Das Statement kann so nicht ausgeführt werden. Jede CTE kann nur einen rekursiven Verweis enthalten.

Versionen:
Diese Fehlermeldung wurde mit SQL Server 2005 eingeführt.

Beispiele:
USE tempdb;
GO
IF OBJECT_ID('tempdb..#t') > 0
 DROP TABLE #t
GO
CREATE TABLE #t
(
 id INT,
 reportToID INT NULL,
)
INSERT INTO #t SELECT 1, NULL
UNION ALL SELECT 2, 1
UNION ALL SELECT 3, 1
UNION ALL SELECT 4, 2
GO
WITH MyCTE (id, reportToID, Level)
AS
(
 SELECT t1.ID, t1.reportToID, 0 AS Level
   FROM #t AS t1
  WHERE reportToID IS NULL
  UNION ALL
 SELECT t1.ID, t1.reportToID, Level + 1
   FROM #t AS t1
   JOIN MyCTE AS t2
     ON t1.reportToID = t2.ID
   JOIN MyCTE AS t3
     ON t1.reportToID = t3.ID
)
SELECT *
  FROM MyCTE
GO

Anmerkungen:
Im obigen Beispiel wird versucht mehrfach auf die CTE im rekursiven Teil zu verweisen. Dies löst den Fehler aus.

Dieser Eintrag wurde eingetragen von und ist abgelegt unter 0 - 999.

Noch kein Feedback


Formular wird geladen...