Introduzione alle CTE ricorsive

Query gerarchiche e ricorsive in SQL Server

Jasmin Ludolf

Content Developer

La CTE ricorsiva

È composta da 4 parti:

WITH cte_name AS (

-- Membro di base initial_query
UNION ALL -- Membro ricorsivo recursive_query termination_condition )
SELECT * FROM cte_name
Query gerarchiche e ricorsive in SQL Server

Guida all'uso di una CTE ricorsiva

  • Per più di 100 passi di ricorsione, aumenta il limite:

    • OPTION(MAXRECURSION 32767)
  • Non sono consentite le seguenti istruzioni SQL: GROUP BY, HAVING, LEFT JOIN, RIGHT JOIN, OUTER JOIN, SELECT DISTINCT, Subqueries,TOP

  • Anchor e membro ricorsivo devono avere lo stesso numero di colonne

  • Anchor e membro ricorsivo devono avere gli stessi tipi di dato

Query gerarchiche e ricorsive in SQL Server

Esempio ricorsivo

Calcolo del fattoriale:

Il fattoriale di n è il prodotto di tutti gli interi positivi ≤ n:

3! = 1 x 2 x 3 = 6

Il fattoriale n! è definito ricorsivamente così:

  • 0! = 1 per iteration = 1
  • (n+1)! = n! * (iteration+1) per iteration > 1
Query gerarchiche e ricorsive in SQL Server

Esempio ricorsivo in codice

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
Query gerarchiche e ricorsive in SQL Server

Ayo berlatih!

Query gerarchiche e ricorsive in SQL Server

Preparing Video For Download...