E' possibile utilizzare le funzioni cast predefinite per convertire un UDT XML nel tipo di dati di base. XML Extender inoltre fornisce una funzione di sovraccarico Content(), utilizzata per il richiamo.
La funzione Content() fornisce i seguenti tipi di richiamo:
E' possibile utilizzare Content() per richiamare un documento XML, memorizzato come server file esterno, in un buffer di memoria. E' possibile consultare la sezione Content(): richiamo da XMLFILE in CLOB per informazioni su tale operazione.
E' inoltre possibile utilizzare Content() per richiamare un documento XML memorizzato in DB2 e memorizzarlo in un server file del file system del server DB2. Le seguenti funzioni Content() vengono utilizzate per memorizzare le informazioni nei server file esterni:
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
Richiama i dati da un server file e li memorizza in CLOB LOCATOR.
Sintassi
XMLFILE in CLOB |
---|
>>-Content--(--xmlobj--)--------------------------------------->< |
Parametri
Tabella 26. parametro XMLFILE in CLOB
Parametro | Tipo di dati | Descrizione |
---|---|---|
xmlobj | XMLFILE | Il documento XML. |
Tipo restituzione
CLOB (clob_len) come LOCATOR
clob_len per DB2 UDB è 2G.
Esempio
Di seguito è riportato l'esempio del richiamo di dati da un server file e della relativa memorizzazione in un indicatore di posizione CLOB.
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 cl CURSOR FOR SELECT Content(order) from sales_tab WHERE sales_person = 'Sriram Srinivasan' EXEC SQL OPEN c1; do { EXEC SQL FETCH c1 INTO :xml_buff; if (SQLCODE != 0) { break; } else { /* con doc XML nel buffer */ } } EXEC SQL CLOSE c1; EXEC SQL CONNECT RESET;
La colonna ORDER della tabella SALES_TAB è di tipo XMLFILE, quindi la funzione UDF Content() richiama i dati da un server file e li memorizza in un indicatore di posizione CLOB.
Scopo
Richiama il contenuto XML memorizzato come tipo XMLVARCHAR e lo memorizza in un server file esterno.
Sintassi
XMLVARCHAR in un server file esterno |
---|
>>-Content--(--xmlobj--,--filename--)-------------------------->< |
Importante: se un file con il nome specificato esiste già, la funzione Content ne sovrascriverà il contenuto.
Nota: |
Parametri
Tabella 27. Parametri XMLVarchar in un server file esterno
Parametro | Tipo di dati | Descrizione |
---|---|---|
xmlobj | XMLVARCHAR | Il documento XML. |
filename | VARCHAR(512) | Il nome completo del server file. |
Tipo restituzione
VARCHAR(512)
Esempio
Di seguito è riportato un esempio di richiamo del contenuto XML memorizzato come tipo XMLVARCHAR e della relativa memorizzazione in un server file esterno.
CREATE table app1 (id int NOT NULL, order db2xml.XMLVarchar); INSERT into app1 values (1, '<?xml version="1.0"?> <!DOCTYPE SYSTEM c:\dxx\samples\dtd\getstart.dtd"-> <Order key="1"> <Customer> <Name>American Motors</Name> <Email>parts@am.com</Email> </Customer> <Part color="black"> <key>68</key> <Quantity>36</Quantity> <ExtendedPrice>34850.16</ExtendedPrice> <Tax>6.000000e-02</Tax> <Shipment> <ShipDate>1998-08-19</ShipDate> <ShipMode>AIR </ShipMode> </Shipment> <Shipment> <ShipDate>1998-08-19</ShipDate> <ShipMode>BOAT </ShipMode> </Shipment> </Order>'); SELECT db2xml.Content(order, 'c:\dxx\samples\cmd\getstart_.dad') from app1 where ID=1;
Scopo
Richiama il contenuto XML memorizzato come tipo XMLCLOB e lo memorizza in un server file esterno.
Sintassi
XMLCLOB in un server file esterno |
---|
>>-Content--(--xmlobj--,--filename--)-------------------------->< |
Importante: se un file con il nome specificato esiste già, la funzione Content ne sovrascriverà il contenuto.
Parametri
Tabella 28. Parametri XMLCLOB in un server file esterno
Parametro | Tipo di dati | Descrizione |
---|---|---|
xmlobj | XMLCLOB come LOCATOR | Il documento XML. |
filename | VARCHAR(512) | Il nome completo del server file. |
Tipo restituzione
VARCHAR(512)
Esempio
Di seguito è riportato un esempio di richiamo del contenuto XML memorizzato come XMLCLOB e della relativa memorizzazione in un server file esterno.
CREATE table app1 (id int NOT NULL, order db2xml.XMLCLOB not logged); INSERT into app1 values (1, '<?xml version="1.0"?> <!DOCTYPE SYSTEM c:\dxx\samples\dtd\getstart.dtd"-> <Order key="1"> <Customer> <Name>American Motors</Name> <Email>parts@am.com</Email> </Customer> <Part color="black"> <key>68</key> <Quantity>36</Quantity> <ExtendedPrice>34850.16</ExtendedPrice> <Tax>6.000000e-02</Tax> <Shipment> <ShipDate>1998-08-19</ShipDate> <ShipMode>AIR </ShipMode> </Shipment> <Shipment> <ShipDate>1998-08-19</ShipDate> <ShipMode>BOAT </ShipMode> </Shipment> </Order>'); SELECT db2xml.Content(order, 'c:\dxx\samples\cmd\getstart.xml') from app1 where ID=1;