INSERTCHILDXML | Insère l'enfant XML |
|---|---|
| Oracle Database SQL | Oracle 10g ou supérieure |
Syntaxe
| INSERTCHILDXML(XMLTypeInstance,XPath,child,value,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) à atteindre. |
| child | Ce paramètre permet d'indiquer le noeud enfant. |
| value | Ce paramètre permet d'indiquer la valeur à insérer. |
| namespace | Ce paramètre permet d'indiquer l'espace de nom. |
Description
Cette fonction permet d'insérer une valeur dans un noeud enfant du document XML.
Remarques
- Fonction utilisée pour modifier dynamiquement un document XML : INSERTCHILDXML permet de manipuler des documents XML stockés sous forme de XMLType dans une base Oracle. Elle insère un noud enfant sous un noeud parent spécifié par un XPath. C'est une des rares fonctions Oracle modifiant directement la structure d'un XML sans avoir à le reconstruire manuellement.
- Permet de cibler un emplacement précis via XPath : Grâce au paramètre XPath, cette fonction localise exactement où insérer le nouveau noud dans l'arborescence. Cela offre un contrôle fin, comparable à ce que permettent des éditeurs XML avancés, mais directement en SQL. Le XPath doit être précis pour éviter des erreurs ou des insertions indésirables.
- Le paramètre child désigne le nom du nouveau noud enfant : Le troisième paramètre, child, correspond au nom du noud enfant que l'on souhaite insérer. Il s'agit simplement du nom de balise XML. Cela permet de structurer le document de manière cohérente en ajoutant, par exemple, des éléments <adresse>, <email>, ou <prix> à un noud parent existant.
- Peut insérer une valeur simple ou une structure XML complète : Le paramètre value peut contenir soit une valeur texte simple, soit un bloc XML complet. Cela rend la fonction très puissante, car on peut insérer des structures hiérarchiques complexes, et non uniquement des textes plats. La valeur est automatiquement convertie en XMLType.
- Gestion facultative des espaces de noms XML (namespace) : Le cinquième paramètre permet de spécifier un espace de noms (namespace) si le document XML en utilise. Cela est crucial pour garantir l'insertion correcte du noeud dans des documents XML utilisant des préfixes ou des URI XMLNS. Omettre ce paramètre dans un document avec espace de noms peut provoquer un échec.
- Fonction retournant un nouvel objet XMLType modifié : INSERTCHILDXML ne modifie pas directement le document XML source. Elle retourne une nouvelle instance de XMLType avec la modification appliquée. Il faut donc réaffecter ou utiliser le résultat de cette fonction pour que la modification ait un effet durable, notamment lors d'une mise à jour.
- Utilisable dans une clause UPDATE pour modifier des colonnes XML : On peut utiliser INSERTCHILDXML dans une instruction UPDATE pour modifier une colonne contenant un document XML. Cela permet d'éditer des documents XML sans extraire, modifier, puis recharger manuellement tout le contenu, ce qui simplifie grandement les mises à jour XML dans les applications métier.
- Nécessite une bonne maîtrise du modèle XML en entrée : Pour que la fonction fonctionne correctement, il faut bien connaître la structure du document XML cible. Une mauvaise utilisation du XPath ou un nom de noud mal orthographié peut entraîner un échec silencieux ou une insertion à un endroit incorrect. Une validation préalable du schéma peut être utile.
- Particulièrement utile pour les bases de données orientées documents : Dans les bases Oracle où des colonnes XMLType sont utilisées pour entreposer des configurations, des factures, ou des structures complexes, INSERTCHILDXML permet d'ajouter des éléments sans casser la structure XML existante. Cela évite les conversions répétées en chaînes de texte.
- Fonction Oracle orientée vers la conformité aux standards XML : INSERTCHILDXML respecte les standards du W3C en matière de structure XML, y compris pour la gestion des espaces de noms, du formatage, et de la hiérarchie. Elle permet donc de maintenir la validité des documents XML même après modification, ce qui est essentiel dans les systèmes interopérables.
- Compatible avec les autres fonctions XML Oracle : Elle peut être combinée avec d'autres fonctions comme EXTRACT, DELETEXML, ou UPDATEXML pour des opérations complexes de manipulation XML. En les utilisant ensemble, on peut construire ou transformer dynamiquement des documents XML dans la base, sans passer par des traitements extérieurs.
- Soumise à certaines limites selon la version Oracle : Le comportement de INSERTCHILDXML peut légèrement varier selon la version d'Oracle, surtout pour les documents avec schémas XML (XMLSchema). Dans les versions plus anciennes (pré-11g), certaines restrictions s'appliquent sur les types de données acceptés et la gestion des espaces de noms. Il est donc important de consulter la documentation correspondant à sa version Oracle.
Voir également
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015