462: Eine äußere Verknüpfung ist im rekursiven Teil des rekursiven allgemeinen Tabellenausdrucks
Fehlermeldung:
Meldung 462, Ebene 16, Status 1, Zeile 1
Eine äußere Verknüpfung ist im rekursiven Teil des rekursiven allgemeinen Tabellenausdrucks '%1!' nicht zulässig.
Ebene:
16.
Beschreibung:
Diese Fehlermeldung erscheint, wenn man versucht in rekursiven Teil einer Common Table Expression einen OUTER JOIN zu verwenden.
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. Der OUTER JOIN muss entfernt werden.
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
FROM #t AS t1
LEFT JOIN MyCTE AS t2
ON t1.reportToID = t2.ID
)
SELECT *
FROM MyCTE
GO
Anmerkungen:
Im obigen Beispiel wird versucht einen LEFT JOIN Operator im rekursiven Teil einer Common Table Expression zu verwenden. Dies löst den Fehler aus.