使用T-sql遞歸語句注意的地方

當我們使用如下遞歸時:
-Creates an infinite loop
WITH cte (EmployeeID, ManagerID, Title) as
(
    SELECT EmployeeID, ManagerID, Title
    FROM dbo.MyEmployees
    WHERE ManagerID IS NOT NULL
  UNION ALL
    SELECT cte.EmployeeID, cte.ManagerID, cte.Title
    FROM cte 
    JOIN  dbo.MyEmployees AS e 
        ON cte.ManagerID = e.EmployeeID
)
--Uses MAXRECURSION to limit the recursive levels to 2
SELECT EmployeeID, ManagerID, Title
FROM cte
OPTION (MAXRECURSION 2);
 
 
※:注意 OPTION (MAXRECURSION 2)
服務器範圍的默認值爲 100。如果指定 0,則沒有限制。每一個語句只能指定一個 MAXRECURSION 值使用類似的語句
實例中指定2,則最大隻能進行2層遞歸。如果該項未指定,則服務器使用默認值。當遞推層數超過100時,服務器就會報錯。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章