DEPTH |
Profondeur |
|---|---|
| Oracle Database SQL | Oracle 10g Release 1 (10.1) ou supérieure |
Syntaxe
| DEPTH(correlation) |
Paramètres
| Nom | Description |
|---|---|
| correlation | Ce paramètre permet d'indiquer un nombre représentant la corrélation avec la condition primaire, si celle-ci contient plusieurs déclarations de conditions primaires. Les valeurs inférieurs à 1 sont considérés comme valant 1. |
Description
Cette fonction permet de retourner le nombre de niveau dans le chemin spécifié ayant la même variable de relation.
Remarques
- Utilisation dans les requêtes XML contextuelles : La fonction DEPTH est principalement utilisée dans les requêtes SQL manipulant des colonnes de type XMLType, notamment lorsqu'on emploie les conditions UNDER_PATH ou EQUALS_PATH. Elle permet de déterminer la profondeur d'un noud dans une hiérarchie XML. Cela facilite l'analyse structurée des données XML stockées dans les colonnes, en permettant par exemple d'identifier le niveau de profondeur d'un élément précis.
- Précision du contexte hiérarchique : DEPTH fonctionne uniquement dans le cadre d'un traitement XML relationnel ou hiérarchique. Elle n'a pas de sens en dehors d'une clause faisant appel à une navigation XPath ou à des conditions logiques basées sur des chemins (path-based conditions). Elle ne s'applique donc pas directement à des colonnes classiques (non XML), mais à des structures arborescentes avec hiérarchie de balises.
- Corrélation obligatoire pour des modèles complexes : Le paramètre correlation est utile lorsqu'on utilise plusieurs conditions de correspondance (pattern matching) dans la clause WHERE. Dans ces cas, chaque condition est numérotée, et la corrélation permet de référencer la bonne condition. Cela garantit que DEPTH retourne la profondeur de la bonne relation XML et évite des erreurs ou incohérences dans des requêtes complexes.
- Retourne un entier relatif à la profondeur XML : La fonction retourne un entier correspondant au nombre de niveaux entre la racine du document XML et le noeud visé. Par exemple, un élément racine a une profondeur de 1, son enfant immédiat a une profondeur de 2,... Cette numérotation permet d'effectuer des filtres ou regroupements selon la profondeur.
- Comportement par défaut si la corrélation est omise ou invalide : Lorsque la valeur du paramètre correlation est omise ou inférieure à 1, Oracle considère automatiquement que la valeur est 1. Cela signifie que, dans les cas simples où il n'y a qu'une seule clause principale dans la requête, on peut ignorer ce paramètre en toute sécurité, mais dans des cas complexes, un oubli peut générer une mauvaise interprétation.
- Filtrage conditionnel par profondeur : En combinaison avec des conditions supplémentaires (comme WHERE DEPTH(correlation) = 3), cette fonction permet de filtrer uniquement les nouds se trouvant à un niveau précis dans une structure XML. Ceci est particulièrement utile lorsqu'on souhaite ne récupérer que les éléments de niveau intermédiaire ou profond dans un arbre de données.
- Nécessite un environnement XML bien structuré : Pour que DEPTH fonctionne correctement, la structure XML sous-jacente doit être bien formée et indexée. Si les chemins XPath ne sont pas correctement définis ou que l'arborescence présente des incohérences, les résultats peuvent être erronés ou la fonction peut ne rien retourner du tout.
- Outil d'analyse dans les hiérarchies de documents XML : Dans les bases de données Oracle où les documents XML contiennent des structures fortement hiérarchisées (comme des catalogues, des arbres d'organisation ou des plans de produit), DEPTH devient un outil puissant pour extraire uniquement certaines sections de la hiérarchie selon leur emplacement.
- Complément idéal de UNDER_PATH : Lorsqu'elle est utilisée avec la clause UNDER_PATH, DEPTH permet d'enrichir les critères de sélection pour extraire non seulement les éléments d'un certain chemin mais aussi ceux situés à un niveau spécifique. Cela affine le ciblage dans les requêtes XML et améliore la précision des analyses.
- Compatible avec XMLTable et les vues XML : La fonction DEPTH peut aussi être combinée avec des constructions telles que XMLTABLE ou des vues matérialisées XML. Dans ces cas, elle permet de déterminer dynamiquement à quelle profondeur se trouve une donnée, utile dans les requêtes d'agrégation ou de segmentation XML.
- Facilité d'intégration dans les modèles relationnels XML : Dans une clause MODEL qui gère des structures relationnelles simulant des modèles XML, DEPTH peut aussi être référencée pour gérer la logique hiérarchique. C'est une façon de combiner modélisation relationnelle et navigation hiérarchique sans écrire de code XML explicite.
- Utilisation dans des cas de diagnostic XML : Enfin, DEPTH peut servir d'outil de diagnostic ou de validation pour détecter si des noeuds XML ont été mal insérés ou placés trop profondément. Par exemple, une condition DEPTH(correlation) > 5 peut révéler des erreurs structurelles dans des documents censés avoir un maximum de 4 niveaux de profondeur.
Voir également
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015