Tout le monde à déjà eu affaire au moins une fois dans sa vie à la récursion. Lorsque j'étais enfant, mes parents et moi vivions dans un immeuble parisien ou figuraient dans le hall deux glaces se faisant face. Lorsque je passais entre ces deux miroirs, mon image se reflétait à l'infini et j'étais assez fier de palper le concept de récursion sur ma personne ! C'est cela la récursion : un processus capable de se reproduire aussi longtemps que nécessaire.Mais en termes "mécaniques" nous ne pouvons accepter une récursion infinie. Dans le monde réel, nous avons besoin que le processus s'arrête parce que notre monde apparaît fermé. Woody Alen, parlant de l'infini du temps, disait "l'éternité c'est long, surtout vers la fin..." !
En informatique la récursion est une technique particulière, capable dans certains cas de traiter avec élégance des problèmes complexes : quelques lignes suffisent à effectuer un travail parfois considérable. Mais la récursion induit certains effets pervers : les ressources pour effectuer le traitement sont maximisées par le fait que chaque appel réentrant du processus nécessite l'ouverture d'un environnement de travail complet ce qui possède un coût généralement très élevé en mémoire. Heureusement, un mathématicien dont je ne me rappelle plus le nom, a découvert que tout processus récursif pouvait s'écrire de manière itérative, à condition de disposer d'une "pile"
Mais notre propos est de parler de la récursivité dans le langage de requête SQL et en particulier de ce que fait SQL Server 2005 au regard de la norme SQL:1999.
Requêtes récursives avec SQL SERVER 2005
Voici une syntaxe normative édulcorée du concept de requête récursive :
WITH [ RECURSIVE ] <surnom_requête> [ ( <liste_colonne> ) ] AS ( <requête_select> ) <requête_utilisant_surnom_requête>
Simple, n’est-ce pas ? En fait tout le mécanisme de récursivité est situé dans l’écriture de la <requête_select>. Nous allons d’abord montrer une version simplifiée, mais non récursive d’une telle requête et, lorsque nous aurons vu ce que nous pouvons faire avec le mot clef WITH, nous dévoilerons un aspect plus "sexy" de SQL, utilisant la récursivité..
Téléchargez cette ressource
Sécuriser Microsoft 365 avec une approche Zero-Trust
Découvrez comment renforcer la cyber-résilience de Microsoft 365 grâce à une approche Zero-Trust, une administration granulaire et une automatisation avancée. La technologie Virtual Tenant de CoreView permet de sécuriser et simplifier la gestion des environnements complexes, tout en complétant vos stratégies IAM, y compris dans les secteurs réglementés.
Les articles les plus consultés
- ActiveViam fait travailler les data scientists et les décideurs métiers ensemble
- Les projets d’intégration augmentent la charge de travail des services IT
- Intelligence Artificielle : DeepKube sécurise en profondeur les données des entreprises
- Databricks lève 1 milliard de dollars !
- 9 défis de transformation digitale !
Les plus consultés sur iTPro.fr
- Cybersécurité : pourquoi 95% des violations de données sont liées à l’humain, surtout en été
- La blockchain n’est pas seulement un défi à encadrer : c’est aussi une solution à exploiter
- Des Master Data aux data products : comment l’IA redéfinit le rôle du MDM
- Communication d’entreprise : la voix s’impose à nouveau comme canal critique à l’ère de l’IA
Articles les + lus
Cybersécurité : les entreprises françaises réclament un durcissement inédit de la réglementation
Cyber risques et IA : 78% des RSSI pointent une déconnexion inquiétante des dirigeants
Des Master Data aux data products : comment l’IA redéfinit le rôle du MDM
La bataille de la 6G se gagne dans la donnée en temps réel
Souveraineté des données : cessons de traiter le symptôme, attaquons-nous aux causes
À la une de la chaîne Data
- Cybersécurité : les entreprises françaises réclament un durcissement inédit de la réglementation
- Cyber risques et IA : 78% des RSSI pointent une déconnexion inquiétante des dirigeants
- Des Master Data aux data products : comment l’IA redéfinit le rôle du MDM
- La bataille de la 6G se gagne dans la donnée en temps réel
- Souveraineté des données : cessons de traiter le symptôme, attaquons-nous aux causes
