Le funzioni di estrazione estraggono il contenuto dell'elemento o il valore attributo da un documento XML e restituiscono i tipi di dati SQL richiesti. XML Extender fornisce una serie di funzioni di estrazione per vari tipi di dati SQL. Le funzioni di estrazione richiedono due tipi di parametri di input. Il primo parametro è l'UDT XML Extender, un UDT XML. Il secondo parametro è il percorso di ubicazione che specifica l'elemento o l'attributo XML. Ciascuna funzione di estrazione restituisce il valore o il contenuto specificato dal percorso di ubicazione.
Poiché alcuni valori dell'elemento o attributo presentano più ricorrenze, le funzioni di estrazione restituiscono un valore scalare o di tabella; l'ultimo è denominato funzione di tabella.
XML Extender fornisce le seguenti funzioni di estrazione:
Negli esempi riportati nella seguente sezione viene utilizzata la shell dei comandi DB2 in cui non è necessario immettere "DB2" all'inizio di ciascun comando.
Scopo
Estrae il contenuto dell'elemento o il valore attributo da un documento XML e restituisce i dati come tipo INTEGER.
Sintassi
Funzione scalare |
---|
>>-extractInteger----(--xmlobj--,--path--)--------------------->< |
Funzione di tabella |
---|
>>-extractIntegers----(--xmlobj--,--path--)-------------------->< |
Parametri
Tabella 29. Parametri delle funzioni extractInteger ed extractIntegers
Parametro | Tipo di dati | Descrizione |
---|---|---|
xmlobj |
XMLVARCHAR, XMLFILE o XMLCLOB | Il nome della colonna. |
path | VARCHAR | Il percorso dell'ubicazione dell'elemento o dell'attributo. |
Tipo restituzione
INTEGER
Nome colonna restituito (funzione tabella)
returnedInteger
Esempio
Esempio di funzione scalare:
Nel seguente esempio, un valore viene restituito quando il valore attributo della chiave è "1". Il valore viene estratto come INTEGER.
SELECT * from table(db2xml.extractInteger(Order, ('c:\dxx\samples\xml\getstart.xml'), '/Order/[@key="1"]')) as x;
Esempio di funzione di tabella:
Nel seguente esempio ciascuna chiave di ordine per le vendite viene automaticamente convertito dal tipo INTEGER in un tipo DECIMAL.
CREATE TABLE t1(decimal(3,2)); INSERT into t1 SELECT * from table(db2xml.extractIntegers(db2xml.XMLFile ('c:\dxx\samples\xml\getstart.xml'), '/Order/@key')) as x; SELECT * from t1;
Scopo
Estrae il contenuto dell'elemento o il valore attributo da un documento XML e restituisce i dati come tipo SMALLINT.
Sintassi
Funzione scalare |
---|
>>-extractSmallint----(--xmlobj--,--path--)-------------------->< |
Funzione di tabella |
---|
>>-extractSmallints----(--xmlobj--,--path--)------------------->< |
Parametri
Tabella 30. Parametri delle funzioni extractSmallint ed extractSmallints
Parametro | Tipo di dati | Descrizione |
---|---|---|
xmlobj |
XMLVARCHAR, XMLFILE o XMLCLOB | Il nome della colonna. |
path | VARCHAR | Il percorso dell'ubicazione dell'elemento o dell'attributo. |
Tipo restituzione
SMALLINT
Nome colonna restituito (funzione tabella)
returnedSmallint
Esempio
Nel seguente esempio, il valore di Quantity in tutti gli ordini di vendita viene estratto come tipo SMALLINT
SELECT * from table(db2xml.extractSmallints(Order, ('c:\dxx\samples\xml\getstart.xml'), '/Order/Part/Quantity')) as x;
Scopo
Estrae il contenuto dell'elemento o il valore attributo da un documento XML e restituisce i dati come tipo DOUBLE.
Sintassi
Funzione scalare |
---|
>>-extractDouble----(--xmlobj--,--path--)---------------------->< |
Funzione di tabella |
---|
>>-extractDoubles----(--xmlobj--,--path--)--------------------->< |
Parametri
Tabella 31. Parametri delle funzioni extractDouble ed extractDoubles
Parametro | Tipo di dati | Descrizione |
---|---|---|
xmlobj |
XMLVARCHAR, XMLFILE o XMLCLOB | Il nome della colonna. |
path | VARCHAR | Il percorso dell'ubicazione dell'elemento o dell'attributo. |
Tipo restituzione
DOUBLE
Nome colonna restituito (funzione tabella)
returnedDouble
Esempio
Esempio di funzione di tabella:
Nel seguente esempio, il valore di ExtendedPrice in tutte le parti dell'ordine di vendita viene estratto come tipo DOUBLE.
SELECT * from table(db2xml.extractDoubles(Order, ('c:\dxx\samples\xml\getstart.xml'), '/Order/Part/ExtendedPrice')) as x;
Esempio di funzione scalare:
Il seguente esempio converte automaticamente il prezzo di un ordine da un tipo DOUBLE in un tipo DECIMAL.
CREATE TABLE t1(price, DECIMAL(5,2)); INSERT into t1 values (db2xml.extractDouble(db2xml.XMLFile ('c:\dxx\samples\xml\getstart.xml'), '/Order/Part/ExtendedPrice')); SELECT * from t1;
Scopo
Estrae il contenuto dell'elemento o il valore attributo da un documento XML e restituisce i dati come tipo REAL.
Sintassi
Funzione scalare |
---|
>>-extractReal----(--xmlobj--,--path--)------------------------>< |
Funzione di tabella |
---|
>>-extractReals----(--xmlobj--,--path--)----------------------->< |
Parametri
Tabella 32. Parametri delle funzioni extractReal ed extractReals
Parametro | Tipo di dati | Descrizione |
---|---|---|
xmlobj |
XMLVARCHAR, XMLFILE o XMLCLOB | Il nome della colonna. |
path | VARCHAR | Il percorso dell'ubicazione dell'elemento o dell'attributo. |
Tipo restituzione
REAL
Nome colonna restituito (funzione tabella)
returnedReal
Esempio
Nel seguente esempio, il valore di Tax viene estratto come tipo REAL.
SELECT * from table(db2xml.extractReals(Order, ('c:\dxx\samples\xml\getstart.xml'), '/Order/Part/Tax')) as x;
Scopo
Estrae il contenuto dell'elemento o il valore attributo da un documento XML e restituisce i dati come tipo CHAR.
Sintassi
Funzione scalare |
---|
>>-extractChar----(--xmlobj--,--path--)------------------------>< |
Funzione di tabella |
---|
>>-extractChars----(--xmlobj--,--path--)----------------------->< |
Parametri
Tabella 33. Parametri delle funzioni extractChar ed extractChars
Parametro | Tipo di dati | Descrizione |
---|---|---|
xmlobj |
XMLVARCHAR, XMLFILE o XMLCLOB | Il nome della colonna. |
path | VARCHAR | Il percorso dell'ubicazione dell'elemento o dell'attributo. |
Tipo restituzione
CHAR
Nome colonna restituito (funzione tabella)
returnedChar
Esempio
Nel seguente esempio il valore di Color viene estratto come tipo CHAR.
SELECT * from table(db2xml.extractChars(Order, ('c:\dxx\samples\xml\getstart.xml'), '/Order/Part/@Color')) as x;
Scopo
Estrae il contenuto dell'elemento o il valore attributo da un documento XML e restituisce i dati come tipo VARCHAR.
Sintassi
Funzione scalare |
---|
>>-extractVarchar----(--xmlobj--,--path--)--------------------->< |
Funzione di tabella |
---|
>>-extractVarchars----(--xmlobj--,--path--)-------------------->< |
Parametri
Tabella 34. Parametri delle funzioni extractVarchar ed extractVarchars
Parametro | Tipo di dati | Descrizione |
---|---|---|
xmlobj |
XMLVARCHAR, XMLFILE o XMLCLOB | Il nome della colonna. |
path | VARCHAR | Il percorso dell'ubicazione dell'elemento o dell'attributo. |
Tipo restituzione
VARCHAR(4K)
Nome colonna restituito (funzione tabella)
returnedVarchar
Esempio
In un database con più di 1000 documenti XML memorizzati nella colonna ORDER della tabella SALES_TAB, è possibile ricercare tutti i clienti che hanno ordinato articoli con ExtendedPrice superiore a 2500.00. La seguente istruzione SQL utilizza la funzione UDF di estrazione nella clausola SELECT:
SELECT extractVarchar(Order, '/Order/Customer/Name') from sales_order_view WHERE price > 2500.00
La funzione UDF extractVarchar() utilizza la colonna ORDER come input e il percorso di ubicazione /Order/Customer/Name come identificativo select. La funzione UDF restituisce i nomi dei clienti. Con la clausola WHERE, la funzione di estrazione considera solo gli ordini con ExtendedPrice superiore a 2500.00.
Scopo
Estrae il contenuto dell'elemento o il valore attributo da un documento XML e restituisce i dati come tipo CLOB.
Sintassi
Funzione scalare |
---|
>>-extractCLOB----(--xmlobj--,--path--)------------------------>< |
Funzione di tabella |
---|
>>-extractCLOBs----(--xmlobj--,--path--)----------------------->< |
Parametri
Tabella 35. Parametri delle funzioni extractCLOB ed extractCLOBs
Parametro | Tipo di dati | Descrizione |
---|---|---|
xmlobj |
XMLVARCHAR, XMLFILE o XMLCLOB | Il nome della colonna. |
path | VARCHAR | Il percorso dell'ubicazione dell'elemento o dell'attributo. |
Tipo restituzione
CLOB(10K)
Nome colonna restituito (funzione tabella)
returnedCLOB
Esempio
In questo esempio, tutti gli elementi vengono estratti da un ordine di acquisto.
SELECT returnedCLOB as part from table(db2xml.extractCLOBs(db2xml.XMLFile('c:\dxx\samples\xml\getstart.xml'), '/Order/Part')) as x;
Scopo
Estrae il contenuto dell'elemento o il valore attributo da un documento XML e restituisce i dati come tipo DATE.
Sintassi
Funzione scalare |
---|
>>-extractDate----(--xmlobj--,--path--)------------------------>< |
Funzione di tabella |
---|
>>-extractDates----(--xmlobj--,--path--)----------------------->< |
Parametri
Tabella 36. Parametri delle funzioni extractDate ed extractDates
Parametro | Tipo di dati | Descrizione |
---|---|---|
xmlobj |
XMLVARCHAR, XMLFILE o XMLCLOB | Il nome della colonna. |
path | VARCHAR | Il percorso dell'ubicazione dell'elemento o dell'attributo. |
Tipo restituzione
DATE
Nome colonna restituito (funzione tabella)
returnedDate
Esempio
Nel seguente esempio il valore di ShipDate viene estratto come tipo DATE.
SELECT * from table(db2xml.extractDates(Order, ('c:\dxx\samples\xml\getstart.xml'), '/Order/Part/Shipment/ShipDate')) as x;
Scopo
Estrae il contenuto dell'elemento o il valore attributo da un documento XML e restituisce i dati come tipo TIME.
Sintassi
Funzione scalare |
---|
>>-extractTime----(--xmlobj--,--path--)------------------------>< |
Funzione di tabella |
---|
>>-extractTimes----(--xmlobj--,--path--)----------------------->< |
Parametri
Tabella 37. Parametri delle funzioni extractTime ed extractTimes
Parametro | Tipo di dati | Descrizione |
---|---|---|
xmlobj |
XMLVARCHAR, XMLFILE o XMLCLOB | Il nome della colonna. |
path | VARCHAR | Il percorso dell'ubicazione dell'elemento o dell'attributo. |
Tipo restituzione
TIME
Nome colonna restituito (funzione tabella)
returnedTime
Esempio
Questo esempio utilizza i file di esempio del manuale. Esegue la ricerca nel file XML book.xml dell'ora in cui è stato fissato il prezzo dei manuali e restituisce i valori come tipo TIME.
<?xml version="1.0"> <DOCTYPE book SYSTEM "c:\dxx\samples\book.dtd"> <book> <chapter id="1" date="07/01/97"> <section>This is a section in Chapter One.</section> <chapter id="2" date="01/02/1997"> <section>This is a section in Chapter Two.</section> </chapter> <price date="12/22/1998" time="11.12.13" timestamp="1998-12-22-11.12.13.888888"> 38.281 </price> </book> select db2xml.extractTime(doc, '/book/price/@time') from t1
Scopo
Estrae il contenuto dell'elemento o il valore attributo da un documento XML e restituisce i dati come tipo TIMESTAMP.
Sintassi
Funzione scalare |
---|
>>-extractTimestamp----(--xmlobj--,--path--)------------------->< |
Funzione di tabella |
---|
>>-extractTimestamps----(--xmlobj--,--path--)------------------>< |
Parametri
Tabella 38. Parametri delle funzioni extractTimestamp ed extractTimestamps
Parametro | Tipo di dati | Descrizione |
---|---|---|
xmlobj |
XMLVARCHAR, XMLFILE o XMLCLOB | Il nome della colonna. |
path | VARCHAR | Il percorso dell'ubicazione dell'elemento o dell'attributo. |
Tipo restituzione
TIMESTAMP
Nome colonna restituito (funzione tabella)
returnedTimestamp
Esempio
Questo esempio utilizza i file di esempio del manuale. Esegue la ricerca nel file XML book.xml dell'ora che indica il momento in cui è stato fissato il prezzo di ciascun manuale ed estrae il valore come tipo TIMESTAMP.
<?xml version="1.0"> <DOCTYPE book SYSTEM "c:\dxx\samples\book.dtd"> <book> <chapter id="1" date="07/01/97"> <section>This is a section in Chapter One.</section> <chapter id="2" date="01/02/1997"> <section>This is a section in Chapter Two.</section> </chapter> <price date="12/22/1998" time="11.12.13" timestamp="1998-12-22-11.12.13.888888"> 38.281 </price> </book> SELECT db2xml.extractTimestamp(doc, '/book/price/@timestamp') from t1