Con XML Extender, è possibile aggiornare l'intero documento XML sostituendo i dati di colonna XML oppure è possibile aggiornare i valori degli elementi o attributi specificati.
Panoramica delle attività:
Importante: quando si aggiorna una colonna abilitata per XML, XML Extender automaticamente aggiorna le tabelle laterali in base alle modifiche apportate. Tuttavia, non aggiornare queste tabelle senza aggiornare il documento XML originale che è stato memorizzato nella colonna XML modificando l'elemento XML o il valore attributo corrispondente. I seguenti aggiornamenti possono causare problemi di incongruenza dati.
Per aggiornare un documento XML:
Utilizzare uno dei seguenti metodi:
Esempio: Aggiorna il tipo XMLVARCHAR, dal tipo VARCHAR cast presumendo che xml_buf sia una variabile host definita come tipo VARCHAR.
UPDATE sales_tab VALUES('123456', 'Sriram Srinivasan', db2xml.XMLVarchar(:xml_buff))
Esempio: il seguente esempio esegue l'aggiornamento di un documento XML utilizzando la funzione XMLVarcharFromFile():
UPDATE sales_tab set order = XMLVarcharFromFile('c:\dxx\samples\cmd\getstart.xml') WHERE sales_person = 'Sriram Srinivasan'
L'esempio precedente aggiorna l'oggetto XML dal file c:\dxx\samples\cmd\getstart.xml nella colonna ORDER nella tabella SALES_TAB.
Consultare Tabella 10 per un elenco delle funzioni di memorizzazione fornite da XML Extender.
Per aggiornare elementi e attributi specifici di un documento XML:
Utilizzare la UDF Update() per specificare ciascuna modifica, anziché aggiornare l'intero documento. Se si utilizza la UDF, specificare un percorso di ubicazione e il valore dell'elemento o dell'attributo rappresentato dal percorso di ubicazione da sostituire. Per informazioni sulla sintassi del percorso di ubicazione, consultare la sezione Percorso di ubicazione. Non è necessario modificare il documento XML: XML Extender effettua automaticamente le modifiche.
Update(xmlobj, path, value)
In questo esempio:
Esempio: la seguente istruzione aggiorna il valore dell'elemento <Customer> nella stringa dei caratteri IBM, utilizzando la UDF Update():
UPDATE sales_tab set order = Update(order, '/Order/Customer/Name', 'IBM') WHERE sales_person = 'Sriram Srinivasan'