L'Extension XML permet de mettre à jour tout un document XML en remplaçant les données de colonne XML, ou uniquement les valeurs des éléments ou des attributs précisés.
Tâche en cours :
Important : Lorsque vous mettez à jour une colonne activée pour XML, l'Extension XML actualise automatiquement les tables annexes en conséquence. Toutefois, n'effectuez aucune mise à jour directe dans ces tables sans mettre à jour le document XML d'origine dans la colonne XML pour éviter des incohérences dans les données.
Pour mettre à jour un document XML :
Utilisez l'une des méthodes suivantes :
Exemple : Mettez à jour le type XMLVARCHAR à partir du type VARCHAR transtypé, en supposant que la variable hôte xml_buf est associée au type VARCHAR.
UPDATE sales_tab VALUES('123456', 'Sriram Srinivasan', db2xml.XMLVarchar(:xml_buff))
Exemple : L'exemple ci-après illustre la mise à jour d'un document XML avec la fonction XMLVarcharFromFile() :
UPDATE sales_tab set order = XMLVarcharFromFile('c:\dxx\samples\cmd\getstart.xml') WHERE sales_person = 'Sriram Srinivasan'
Dans l'exemple précédent, l'objet XML est mis à jour du fichier c:\dxx\samples\cmd\getstart.xml vers la colonne ORDER de la table SALES_TAB.
Pour obtenir la liste des fonctions d'archivage fournies par l'Extension XML, reportez-vous au Tableau 10.
Pour mettre à jour certains éléments et attributs d'un document XML :
Précisez les modifications voulues à l'aide de la fonction UDF Update(), plutôt que de mettre à jour tout le document. Avec la fonction UDF, vous indiquez un chemin d'emplacement et la valeur de l'élément ou de l'attribut représenté par le chemin à remplacer. (Pour consulter la syntaxe du chemin d'emplacement, reportez-vous à la section Chemin d'emplacement .) Vous n'avez pas besoin d'éditer le document XML : l'Extension XML effectue les modifications à votre place.
Update(xmlobj, path, value)
Dans cet exemple :
Exemple : L'instruction ci-après remplace la valeur de l'élément <Customer> par la chaîne de caractères IBM, avec la fonction UDF Update() :
UPDATE sales_tab set order = Update(order, '/Order/Customer/Name', 'IBM') WHERE sales_person = 'Sriram Srinivasan'