E' possibile aggiornare, cancellare, ricercare e richiamare le raccolte XML. Tuttavia, tenere presente che lo scopo dell'utilizzo di una raccolta XML è quello di memorizzare o richiamare i dati, privi di tag, contenuti nelle tabelle del database. I dati contenuti nelle tabelle esistenti del database sono elementi differenti dai documenti XML in entrata; le operazioni di aggiornamento, di cancellazione e di ricerca si basano sull'accesso SQL regolare a questo tabelle. Se i dati derivano dalla scomposizione dei documenti XML in entrata, nessun documento XML esisterà più.
XML Extender consente di eseguire operazioni sui dati da una vista della raccolta XML. Utilizzando le istruzioni UPDATE e DELETE, è possibile modificare i dati utilizzati per la composizione dei documenti XML, e quindi, aggiornare la raccolta XML.
Considerazioni:
XML Extender consente di aggiornare i dati privi di tag memorizzati nelle tabelle della raccolta XML. L'aggiornamento dei valori della tabella della raccolta XML aggiorna anche il testo di un elemento XML o il valore di un attributo XML. E' inoltre possibile che gli aggiornamenti eseguano la cancellazione di un'istanza di dati da attributi o elementi con ricorrenza multipla.
Da un punto di vista SQL, la modifica del valore dell'elemento o dell'attributo è un'operazione di aggiornamento e la cancellazione di un'istanza di un elemento o un attributo è un'operazione di cancellazione. Dal punto di vista XML, finché esiste il testo dell'elemento o il valore dell'attributo di element_node root, esiste anche il documento XML che rappresenta, quindi, un'operazione di aggiornamento.
Requisiti: per aggiornare i dati in una raccolta XML, rispettare le seguente regole.
In una raccolta XML, il testo dell'elemento e il valore dell'attributo vengono associati nelle colonne nelle tabelle del database. Senza tener conto se i dati della colonna esistevano precedentemente o se derivano dalla scomposizione dei documenti XML in entrata, sostituire questi dati utilizzando la tecnica di aggiornamento SQL regolare.
Per aggiornare un valore dell'elemento o dell'attributo, specificare una clausola WHERE nell'istruzione SQL UPDATE che contiene la condizione di collegamento specificata nel file DAD.
Ad esempio:
UPDATE SHIP_TAB set MODE = 'BOAT' WHERE MODE='AIR' AND PART_KEY in (SELECT PART_KEY from PART_TAB WHERE ORDER_KEY=68)
Il valore dell'elemento <ShipMode> viene aggiornato da AIR in BOAT nella tabella SHIP_TAB, dove la chiave è 68.
Per aggiornare i documenti XML composti eliminando gli elementi o gli attributi a ricorrenza multipla, cancellare una riga contenente il valore del campo che corrisponde al valore dell'attributo o dell'elemento, utilizzando la clausola Where. Finché non si cancella la riga che contiene i valori del primo element_node, la cancellazione dei valori dell'elemento è considerata un'aggiornamento del documento XML.
Ad esempio, nella seguente istruzione DELETE, si esegue la cancellazione di un elemento <shipment> specificando un valore univoco di uno dei relativi elementi secondari.
DELETE from SHIP_TAB WHERE DATE='1999-04-12'
Se si specifica un valore DATE viene cancellata la riga che corrisponde a questo valore. Il documento composto originariamente conteneva due elementi <shipment>, ora ne contiene uno.
E' possibile cancellare un documento XML composto da una raccolta. Ciò significa che se si dispone di una raccolta XML che compone più documenti XML, è possibile cancellare uno di questi documenti composti.
Per cancellare il documento, cancellare una riga della tabella che compone il primo element_node specificato nel file DAD. Questa tabella contiene la chiave primarie relativa alla tabella della raccolta di livello superiore e la chiave esterna relative alle tabelle di livello inferiore.
Ad esempio la seguente istruzione DELETE specifica il valore della colonna della chiave primaria.
DELETE from order_tab WHERE order_key=1
ORDER_KEY è la chiave primaria della tabella ORDER_TAB e il primo element_node quando viene composto il documento XML. La cancellazione di questa riga cancella un documento XML generato durante la composizione. Quindi, dal punto di vista XML, un documento XML viene cancellato dalla raccolta XML.
Il richiamo dei documenti XML da una raccolta XML è simile alla composizione di documenti dalla raccolta.
Per richiamare documenti XML, utilizzare la procedura memorizzata, dxxRetrieveXML(). Per la sintassi e gli esempi, consultare la sezione dxxRetrieveXML().
Considerazioni sul file DAD: quando si scompongono i documenti XML in una raccolta XML, è possibile perdere l'ordine dei valori degli attributi e degli elementi a ricorrenza multipla, a mano che non si specifichi l'ordine nel file DAD. Per conservare questo ordine, utilizzare lo schema dell'associazione RDB_node. Questo schema dell'associazione consente di specificare un attributo orderBy per la tabella contenente l'elemento root nel relativo RDB_node.