Manuali IBM

XML Extender - Gestione e programmazione


Funzioni di estrazione

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.

extractInteger() ed extractIntegers()

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;

extractSmallint() ed extractSmallints()

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;

extractDouble() ed extractDoubles()

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;

extractReal() ed extractReals()

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;

extractChar() ed extractChars()

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;

extractVarchar() ed extractVarchars()

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.

extractCLOB() ed extractCLOBs()

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;

extractDate() ed extractDates()

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;

extractTime() ed extractTimes()

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
 

extractTimestamp() ed extractTimestamps()

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
 


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