Introduction aux CTE récursives

Requêtes hiérarchiques et récursives dans SQL Server

Jasmin Ludolf

Content Developer

La CTE récursive

Se compose de 4 parties :

WITH cte_name AS (

-- Membre ancre initial_query
UNION ALL -- Membre récursif recursive_query termination_condition )
SELECT * FROM cte_name
Requêtes hiérarchiques et récursives dans SQL Server

Guide d'utilisation d'une CTE récursive

  • Au-delà de 100 étapes de récursion, augmentez la limite :

    • OPTION(MAXRECURSION 32767)
  • Les instructions SQL suivantes ne sont pas autorisées : GROUP BY, HAVING, LEFT JOIN, RIGHT JOIN, OUTER JOIN, SELECT DISTINCT, Subqueries,TOP

  • Le nombre de colonnes du membre ancre et du membre récursif doit être identique

  • Le type de données du membre ancre et du membre récursif doit être identique

Requêtes hiérarchiques et récursives dans SQL Server

Exemple récursif

Calcul du factoriel :

Le factoriel de n est le produit de tous les entiers positifs inférieurs ou égaux à n :

3! = 1 x 2 x 3 = 6

Le factoriel n! se définit récursivement ainsi :

  • 0! = 1 pour iteration = 1
  • (n+1)! = n! * (iteration+1) pour iteration > 1
Requêtes hiérarchiques et récursives dans SQL Server

Exemple récursif en code

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
Requêtes hiérarchiques et récursives dans SQL Server

Passons à la pratique !

Requêtes hiérarchiques et récursives dans SQL Server

Preparing Video For Download...