Wprowadzenie do rekurencyjnych CTE

Hierarchiczne i rekurencyjne zapytania w SQL Server

Jasmin Ludolf

Content Developer

Rekurencyjne CTE

Składa się z 4 części:

WITH cte_name AS (

-- Anchor member initial_query
UNION ALL -- Recursive member recursive_query termination_condition )
SELECT * FROM cte_name
Hierarchiczne i rekurencyjne zapytania w SQL Server

Wskazówki dotyczące rekurencyjnych CTE

  • Przy więcej niż 100 krokach rekurencji należy zwiększyć ich liczbę:

    • OPTION(MAXRECURSION 32767)
  • Następujące instrukcje SQL są niedozwolone: GROUP BY, HAVING, LEFT JOIN, RIGHT JOIN, OUTER JOIN, SELECT DISTINCT, Subqueries,TOP

  • Liczba kolumn w elemencie zakotwiczającym i rekurencyjnym musi być taka sama

  • Typy danych w elemencie zakotwiczającym i rekurencyjnym muszą być takie same

Hierarchiczne i rekurencyjne zapytania w SQL Server

Przykład rekurencji

Obliczanie silni:

Silnia liczby n to iloczyn wszystkich dodatnich liczb całkowitych mniejszych lub równych n:

3! = 1 x 2 x 3 = 6

Silnia n! zdefiniowana rekurencyjnie:

  • 0! = 1 for iteration = 1
  • (n+1)! = n! * (iteration+1) for iteration > 1
Hierarchiczne i rekurencyjne zapytania w SQL Server

Przykład rekurencji w kodzie

WITH recursion AS

(SELECT 1 AS iterationCounter,1 AS factorial
UNION ALL SELECT iterationCounter+1,factorial * (iterationCounter+1) FROM recursion
WHERE iterationCounter < 10 )
SELECT factorial FROM recursion
3628800
Hierarchiczne i rekurencyjne zapytania w SQL Server

Czas na ćwiczenia!

Hierarchiczne i rekurencyjne zapytania w SQL Server

Preparing Video For Download...