Pour éviter des UNIONs, on peut créer une table temporaire contenant les colonnes que requiert FOR XML EXPLICIT, puis la peupler avec les lignes appropriées. Autrement dit, on crée une table temporaire ayant la structure de la table universelle qu'illustre la figure 5. En utilisant le code SQL suivant
Utiliser une table temporaire
pour
créer une table temporaire appelée
#TreeXML, on peut renvoyer les données
en format XML:
SELECT * FROM #TreeXML
FOR XML EXPLICIT
Pour des requêtes plus complexes,
cette technique dispense d’une grande
instruction SQL contenant plusieurs
instructions UNION. Comme nous le
verrons plus loin, elle est également intéressante
parce qu’on peut étendre le
code pour traiter un nombre variable
de colonnes, comme dans l’exemple
de structure arborescente. L’inconvénient
est que la création de tables
temporaires est une opération généralement
plus lente que l’instruction
UNION relativement efficace. Par
conséquent, on réservera cette technique
à des cas plus complexes.
Le listing 4 montre le code complet
servant à générer une procédure stockée
qui créera la hiérarchie XML complète
que l’on voit figure 2. La procédure
a deux étapes. La première crée
une table temporaire qui a les mêmes
noms de colonnes que la table universelle.
Le code peuple ensuite la table
un niveau à la fois. L’élément de niveau
supérieur (Fred) est ajouté d’abord ; à
noter qu’il faut une jointure entre les
tables Relationship et Employee pour
extraire tous les éléments de données.
Le code ajoute ensuite tous les employés
qui reportent à Fred. Le code
effectue un self join en retour vers la
table temporaire pour obtenir des détails
des colonnes Employee!1!EmployeeID
et Employee!1!FirstName,
que vous venez de calculer. Vous pouvez
faire une jointure en retour au niveau
précédent chaque fois que vous
insérez un nouveau niveau, ce qui vous
dispense d’un nombre de jointures en
constante augmentation comme avec
la solution UNIONs des listings 2 et 3.
L’exécution de cette procédure stockée
renvoie le XML requis que montre
la figure 2.
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
Les plus consultés sur iTPro.fr
- Une nouvelle ère de la modernisation du mainframe
- Akamai Technologies déploie sa stratégie de protection en ligne
- Baromètre channel IT : fin du cuivre, essor de UCaaS et premiers pas vers l’IA
- Fraude par identité synthétique : comment l’IA peut redonner confiance aux entreprises et à leurs clients
Articles les + lus
Femmes et métiers de la tech : une attractivité réelle freinée par des stéréotypes persistants
Moderniser le développement logiciel : de la fragmentation à l’intégration
Analyse Patch Tuesday Mars 2026
Une nouvelle ère de la modernisation du mainframe
Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
À la une de la chaîne Tech
- Femmes et métiers de la tech : une attractivité réelle freinée par des stéréotypes persistants
- Moderniser le développement logiciel : de la fragmentation à l’intégration
- Analyse Patch Tuesday Mars 2026
- Une nouvelle ère de la modernisation du mainframe
- Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
