APPENDCHILDXML |
Apposé un enfant un XML |
|---|---|
| Oracle Database SQL | 10g Release 2 (version 10.2) à 12c Release 1 (version 12.1.0.1) |
Syntaxe
| APPENDCHILDXML(XMLTypeInstance,XPath,expression,namespace) |
Paramètres
| Nom | Description |
|---|---|
| XMLTypeInstance | Ce paramètre permet d'indiquer l'instance de type XML. |
| XPath | Ce paramètre permet d'indiquer un ou plusieurs noeuds dans un ou plusieurs noeud enfant devant être ajouté. |
| expression | Ce paramètre permet d'indiquer un ou plusieurs noeuds dans le type XML. |
| namespace | Ce paramètre permet d'indiquer l'espace de noms pour la recherche du chemin. |
Description
Cette fonction permet de traiter une valeur fournisseur dans un document XML du noeud enfant indiquer par l'expression spécifié.
Remarques
- Permet de modifier dynamiquement une structure XML : APPENDCHILDXML est une fonction spécialisée permettant d'ajouter un ou plusieurs noeuds enfants à une instance XML existante. Elle s'utilise pour modifier ou enrichir dynamiquement un document XML stocké en base sous forme de XMLType.
- Fonction très utile pour les colonnes XMLType : Elle s'adresse spécifiquement aux colonnes ou variables de type XMLType. Cela permet aux développeurs de gérer et manipuler du XML directement en SQL, sans passer par des langages externes comme Java ou PL/SQL XML DOM.
- Le XPath détermine l'emplacement précis d'insertion : Le paramètre XPath est crucial car il définit l'endroit dans la structure XML où le nouveau contenu sera ajouté. Si le chemin est invalide ou ne correspond à aucun noeud, la fonction peut échouer ou ne rien modifier du tout.
- Le paramètre expression représente le contenu XML à ajouter : L'expression peut être un fragment XML ou un noeud XML complet, fourni sous forme de chaîne ou de XMLType. Cela donne une grande souplesse pour générer dynamiquement du contenu à insérer dans la hiérarchie XML.
- La gestion de l'espace de noms (namespace) est essentielle : Le paramètre namespace permet de gérer correctement les éléments qualifiés dans les documents XML utilisant des espaces de noms. Sans un bon paramétrage, les chemins XPath peuvent échouer à trouver les noeuds ciblés.
- Retourne un nouvel objet XMLType modifié : APPENDCHILDXML ne modifie pas l'instance XMLType en place, mais retourne un nouvel objet XMLType intégrant les modifications. Il faut donc assigner ou mettre à jour explicitement la valeur retournée pour que les changements soient conservés.
- Peut être utilisée dans les requêtes SELECT, UPDATE, ou MERGE : La fonction peut être intégrée dans des requêtes de mise à jour SQL, par exemple :
- UPDATE ma_table SET mon_xml = APPENDCHILDXML(mon_xml, '/racine', '
valeur ') WHERE id = 1; - Peut échouer silencieusement sans gestion d'erreur XPath explicite : Si l'XPath ou les espaces de noms ne sont pas valides, la fonction peut ne rien faire sans erreur visible. Il est donc recommandé de valider les structures XML et les chemins XPath à l'avance pour éviter des comportements silencieux ou inattendus.
Cela permet une édition ciblée de documents XML dans la base.
Exemples
L'exemple suivant ajoute un noeud /Owner au noeud /Warehouse/Building de warehouse_spec dans la table oe.warehouses si la valeur du noeud /Building est «Loué» :
- UPDATE warehouses
- SET warehouse_spec = APPENDCHILDXML(warehouse_spec, 'Warehouse/Building',
- XMLType('
Grandco '))
- WHERE EXTRACTVALUE(warehouse_spec, '/Warehouse/Building') = 'Rented';
-
- SELECT warehouse_id,
- warehouse_name,
- EXTRACTVALUE(warehouse_spec, '/Warehouse/Building/Owner') "Prop.Owner"
- FROM warehouses
- WHERE EXISTSNODE(warehouse_spec, '/Warehouse/Building/Owner') = 1;
on obtiendra un résultat ressemblant à ceci :
WAREHOUSE_ID WAREHOUSE_NAME Prop.Owner------------ --------------- ----------
2 San Francisco Grandco
3 New Jersey Grandco
Voir également
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015