DELETEXML |
Efface le XML |
|---|---|
| Oracle Database SQL | Oracle 9i+ |
Syntaxe
| DELETEXML(XMLTypeInstance,XPath,namespace) |
Paramètres
| Nom | Description |
|---|---|
| XMLTypeInstance | Ce paramètre permet d'indiquer l'instance de XMLType. |
| XPath | Ce paramètre permet d'indiquer un ou plusieurs noeud(s) à supprimer. |
| namespace | Ce paramètre permet d'indiquer l'espace de nom. |
Description
Cette fonction permet d'effacer un/des noeud(s) correspondant à l'expression spécifié dans le document XML.
Remarques
- Utilisation ciblée sur les données XML entreposées: La fonction DELETEXML est conçue pour agir sur des objets de type XMLType, ce qui signifie qu'elle cible spécifiquement les colonnes ou valeurs XML en base. Elle permet de manipuler directement le contenu XML sans devoir extraire, modifier puis réinsérer le document manuellement. Cette fonction est essentielle pour le traitement XML natif dans Oracle.
- Suppression basée sur des expressions XPath : Le deuxième paramètre de DELETEXML est une expression XPath. Cela permet de cibler précisément le ou les noeuds à supprimer dans la hiérarchie XML. Grâce à la puissance de XPath, on peut spécifier des chemins complexes, avec des filtres, des conditions ou des positions, pour affiner la suppression.
- Gestion des espaces de noms XML : Le paramètre namespace permet de gérer les documents XML avec des espaces de noms (namespaces). Si le XML contient des balises qualifiées (<ns:balise>), l'absence de ce paramètre peut empêcher la suppression. Fournir l'espace de nom correct permet d'effectuer la suppression même dans des documents structurés et normalisés.
- Fonction immuable : retourne une nouvelle instance XML : DELETEXML ne modifie pas l'instance XML en place. Elle retourne une nouvelle instance de type XMLType avec les nouds supprimés. Cela permet d'enchaîner d'autres traitements, ou de mettre à jour le document XML dans une commande UPDATE via une sous-requête ou un SET.
- Fonction utile pour les mises à jour conditionnelles : Lorsqu'on souhaite nettoyer des documents XML en supprimant des sections obsolètes, redondantes ou inutiles (par exemple, des éléments vides, ou des nouds supprimés fonctionnellement), DELETEXML permet de le faire proprement en ciblant uniquement les portions à supprimer sans reconstruire tout le document.
- Peut être utilisée dans des requêtes UPDATE complexes : Un usage fréquent de DELETEXML est dans une instruction UPDATE, par exemple :
- Compatibilité avec les documents XML imbriqués : La fonction peut opérer même dans des structures XML profondément imbriquées, à condition que le chemin XPath soit correct. Il est donc crucial de maîtriser la syntaxe XPath et les hiérarchies XML pour éviter des suppressions imprévues ou des échecs d'exécution.
- Aucune erreur si le noud n'existe pas : Si le noud ciblé par le chemin XPath n'existe pas dans le document XML, DELETEXML retourne simplement le document tel quel, sans erreur. Cela permet d'écrire des requêtes robustes, même si la structure XML est variable ou que certains éléments sont optionnels.
- Fonction performante mais dépendante de l'indexation XML : Bien que rapide pour des documents XML courts ou moyens, DELETEXML peut être lent si appliquée massivement sans index sur des colonnes XMLType. Il est recommandé d'utiliser des index XMLPath pour améliorer les performances si les suppressions sont fréquentes ou conditionnelles.
- Usage combiné avec EXTRACT et INSERTCHILDXML : Dans une logique de modification XML avancée, on peut combiner DELETEXML avec EXTRACTVALUE, INSERTCHILDXML ou UPDATEXML pour lire, insérer ou mettre à jour d'autres parties du document. Cela forme un ensemble cohérent de fonctions pour la manipulation complète du contenu XML.
- Comportement sensible à la casse et au format XML : Le XPath fourni à DELETEXML est sensible à la casse des balises XML. Si une balise est Client et que l'on écrit client, la fonction ne supprimera rien. De même, l'omission ou la mauvaise gestion des espaces de noms XML entraînera souvent un échec silencieux.
- Excellente alternative à des traitements applicatifs coûteux : Dans des architectures classiques, la suppression de contenu XML était souvent réalisée côté applicatif (extraction du XML, traitement, puis enregistrement). Grâce à DELETEXML, Oracle permet d'exécuter ce traitement directement en SQL, ce qui réduit les transferts de données, diminue la complexité, et améliore les performances globales.
Cela permet de supprimer dynamiquement une partie du document XML en fonction du contexte, sans avoir à analyser manuellement le contenu via du code externe.
Voir également
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015