Introduction aux CTE récursifs

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

Jasmin Ludolf

Content Developer

Le CTE récursif

Comporte 4 parties :

WITH cte_name AS (

-- Membre d'ancrage 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'un CTE récursif

  • Pour plus de 100 étapes de récursion, augmentez la limite :

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

  • Le nombre de colonnes du membre d'ancrage et du membre récursif doit être identique

  • Les types de données du membre d'ancrage et du membre récursif doivent être identiques

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 for iteration = 1
  • (n+1)! = n! * (iteration+1) for 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...