Manuali IBM

XML Extender - Gestione e programmazione


Richiamo dati

Utilizzando XML Extender, è possibile richiamare un documento intero o il contenuto degli elementi e gli attributi. Quando si richiama direttamente una colonna XML, XML Extender restituisce l'UDT come tipo di colonna. Per informazioni dettagliate sul richiamo dei dati consultare le seguenti sezioni:

XML Extender fornisce due metodi di richiamo dati: le funzioni cast predefinite e la UDF di sovraccarico Content(). La sezione Tabella 11 illustra quando utilizzare ciascun metodo.

Tabella 11. Le funzioni di richiamo di XML Extender
Tipo XML Richiamare da DB2 come...
VARCHAR CLOB FILE
XMLVARCHAR VARCHAR N/D Content()
XMLCLOB N/D XMLCLOB Content()
XMLFILE N/D Content() FILE

Richiamo di un documento intero

Panoramica delle attività:

  1. Accertarsi di aver memorizzato il documento XML in una tabella XML e stabilire quali dati richiamare.
  2. Scegliere un metodo per il richiamo dei dati nella tabella DB2 (funzioni cast o UDF).
  3. Se si utilizzano le UDF Content() sovraccaricate, determinare i tipi di dati associati ai dati richiamati e i tipi di dati da esportare.
  4. Specificare un'interrogazione SQL che indichi la colonna e la tabella XML da cui richiamare il documento XML.

XML Extender fornisce de metodi per il richiamo dei dati:

Utilizzare una funzione cast predefinita
Utilizzare la funzione cast predefinita fornita da DB2 per gli UDT per convertire un UDT XML in un tipo di base SQL e quindi utilizzarlo. E' possibile utilizzare le funzioni cast fornite da XML Extender nell'istruzione SELECT per richiamare i dati. La sezione Tabella 12 illustra le funzioni cast fornite:


Tabella 12. Le funzioni cast predefinite di XML Extender
Cast utilizzato nella clausola select Tipo restituito Descrizione
varchar(XMLVARCHAR) VARCHAR documento XML in VARCHAR
clob(XMLCLOB) CLOB documento XML in CLOB
varchar(XMLFile) VARCHAR nome file XML in VARCHAR
Esempio: il seguente esempio richiama XMLVARCHAR e lo memorizza come tipo di dati VARCHAR:

EXEC SQL SELECT db2xml.varchar(order) from sales_tab

Utilizzare la UDF di sovraccarico Content()
Utilizzare la UDF Content() per richiamare il contenuto del documento dalla memoria esterna oppure per esportare il documento dalla memoria interna in un file esterno del server DB2.

Ad esempio, si dispone del documento XML memorizzato come XMLFILE e si desidera eseguirlo nella memoria, è possibile utilizzare la UDF Content() che richiama un tipo di dati XMLFILE come input e restituire un CLOB.

La UDF Content() esegue due differenti funzioni di richiamo, a seconda del tipo di dati specificato. Tale funzione:

Richiama un documento dalla memoria esterna e lo memorizza in quella interna.
E' possibile utilizzare Content() per richiamare il documento XML in un buffer di memoria o in un indicatore di posizione CLOB quando il documento viene memorizzato come file esterno.. Utilizzare la seguente sintassi di funzione, dove xmlobj è la colonna XML per la quale viene eseguita l'interrogazione:

XMLFILE to CLOB: Richiama i dati da un file e li esporta in un indicatore di posizione CLOB.

Content(xmlobj XMLFile)

Richiama un documento dalla memoria interna e lo esporta in un file esterno
E' inoltre possibile utilizzare Content() per richiamare un documento XML memorizzato in DB2 come tipo di dati XMLCLOB e per esportarlo in un file del sistema file del server database. Quindi restituisce il nome file di tipo VARCHAR. Utilizzare la seguente sintassi di funzione, dove xmlobj è la colonna XML per la quale viene eseguita l'interrogazione filename è il file esterno. XML type può essere un tipo di dati XMLVARCHAR o XMLCLOB.

tipo XML nel file esterno: Richiama il contenuto XML memorizzato come tipo di dati XML e lo esporta in un file esterno.

Tipo XML Content(xmlobj,
nomefile varchar(512))

Dove:

xmlobj
Il nome della colonna XML da cui richiamare il contenuto XML; xmlobj può essere di tipo XMLVARCHAR o XMLCLOB.

filename
Il nome del file in cui memorizzare i dati XML.

Nell'esempio riportato di seguito, un piccolo segmento deI programma C con SQL integrata illustra come un documento XML viene richiamato da un file nella memoria. In questo esempio la colonna BOOK è di tipo XMLFILE.

EXEC SQL BEGIN DECLARE SECTION;
              SQL TYPE IS CLOB_LOCATOR xml_buff;
          EXEC SQL END DECLARE SECTION;
          EXEC SQL CONNECT TO SALES_DB
          EXEC SQL DECLARE c1 CURSOR FOR
              SELECT Content(order) from sales_tab 
                        EXEC SQL OPEN c1;
          do {
             EXEC SQL FETCH c1 INTO :xml_buff; 
             if (SQLCODE != 0) {
                break;
                }
             else {
               /* do whatever you need to do with the XML doc in buffer */
               }
             }
          EXEC SQL CLOSE c1;
          EXEC SQL CONNECT RESET;

Richiamo del contenuto degli elementi e dei valori degli attributi

E' possibile richiamare (estrarre) il contenuto di un elemento o un valore attributo da uno o più documenti XML (ricerca documenti della raccolta o del documento singolo). XML Extender fornisce funzioni di estrazione definite dall'utente che è possibile specificare nella clausola SQL SELECT per ciascun tipo di dati SQL.

Il richiamo del contenuto e dei valori degli elementi e degli attributi è utile nello sviluppo delle applicazioni, in quanto è possibile accedere ai dati XML come dati relazionali. Ad esempio, si supponga di disporre di 1000 documenti XML memorizzati nella colonna ORDER nella tabella SALES_TAB. E' possibile richiamare i nomi di tutti i clienti che hanno ordinato gli articoli utilizzando la seguente istruzione SQL con le UDF di estrazione nella clausola SELECT per richiamare le seguenti informazioni:

SELECT extractVarchar(Order, '/Order/Customer/Name') from sales_order_view 
   WHERE price > 2500.00

In questo esempio, l'UDF di estrazione richiama l'elemento <customer> dalla colonna ORDER come tipo di dati VARCHAR. Il percorso di ubicazione è /Order/Customer/Name (consultare la sezione Percorso di ubicazione per la sintassi del percorso di ubicazione). Inoltre il numero dei valori restituiti viene ridotto utilizzando una clausola WHERE che specifica solo il contenuto dell'elemento <customer> e l'elemento secondario <ExtendedPrice> con valore superiore a 2500.00.

Per estrarre il contenuto dell'elemento o i valori dell'attributo: Utilizzare le UDF di estrazione elencate in Tabella 13 utilizzando la seguente sintassi come tabella o funzione scalare:

extractretrieved_datatype(xmlobj, path) 

Dove:

retrieved_datatype
E' il tipo di dati restituito dalla funzione di estrazione; i tipi di dati sono i seguenti:

xmlobj
Il nome della colonna XML da cui estrarre l'elemento o l'attributo. Questa colonna deve essere definita come uno dei seguenti UDT XML:

percorso
Il percorso di ubicazione dell'elemento o dell'attributo nel documento XML (ad esempio /Order/Customer/Name). Per informazioni sulla sintassi del percorso di ubicazione, consultare la sezione Percorso di ubicazione.

Tabella 13 illustra le funzioni di estrazione, sia in formato scalare sia in formato tabella:

Tabella 13. Le funzioni di estrazione XML Extender
Funzione scalare Funzione di tabella Nome colonna restituita (funzione tabella) Tipo restituito
extractInteger() extractIntegers() returnedInteger INTEGER
extractSmallint() extractSmallints() returnedSmallint SMALLINT
extractDouble() extractDoubles() returnedDouble DOUBLE
extractReal() extractReals() returnedReal REAL
extractChar() extractChars() returnedChar CHAR
extractVarchar() extractVarchars() returnedVarchar VARCHAR
extractCLOB() extractCLOBs() returnedCLOB CLOB
extractDate() extractDates() returnedDate DATE
extractTime() extractTimes() returnedTime TIME
extractTimestamp() extractTimestamps() returnedTimestamp TIMESTAMP


[ Inizio pagina | Pagina precedente | Pagina successiva | Indice | Indice analitico ]