Introducere în CTE recursiv

Interogări ierarhice și recursive în SQL Server

Jasmin Ludolf

Content Developer

CTE-ul recursiv

Este format din 4 părți:

WITH cte_name AS (

-- Anchor member initial_query
UNION ALL -- Recursive member recursive_query termination_condition )
SELECT * FROM cte_name
Interogări ierarhice și recursive în SQL Server

Ghid de utilizare a unui CTE recursiv

  • Pentru mai mult de 100 de pași de recursivitate, creșteți numărul acestora:

    • OPTION(MAXRECURSION 32767)
  • Instrucțiunile SQL următoare nu sunt permise: GROUP BY, HAVING, LEFT JOIN, RIGHT JOIN, OUTER JOIN, SELECT DISTINCT, Subqueries,TOP

  • Numărul de coloane ale membrului ancoră și ale celui recursiv trebuie să fie același

  • Tipurile de date ale membrului ancoră și ale celui recursiv trebuie să fie aceleași

Interogări ierarhice și recursive în SQL Server

Exemplu recursiv

Calcularea factorialului:

Factorialul lui n este definit ca produsul tuturor numerelor întregi pozitive mai mici sau egale cu n:

3! = 1 x 2 x 3 = 6

Factorialul n! este definit recursiv astfel:

  • 0! = 1 pentru iterație = 1
  • (n+1)! = n! * (iterație+1) pentru iterație > 1
Interogări ierarhice și recursive în SQL Server

Exemplu recursiv în cod

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
Interogări ierarhice și recursive în SQL Server

Să exersăm!

Interogări ierarhice și recursive în SQL Server

Preparing Video For Download...