Puede utilizar las funciones predefinidas de conversión de datos para convertir un UDT de XML en el tipo de datos base. El XML Extender también proporciona una función sobrecargada Content(), que se utiliza para la recuperación de datos.
La función Content() proporciona los tipos siguientes de recuperación de datos:
Puede utilizar Content() para recuperar un documento XML, contenido en un archivo de servidor externo, y colocarlo en una memoria intermedia.. Puede utilizar Content(): recuperar de XMLFILE y almacenar en CLOB con este fin.
Puede también utilizar Content() para recuperar un documento XML, contenido dentro de DB2, y almacenarlo en un archivo del sistema de archivos del servidor de DB2. Las funciones Content() siguientes se utilizan para almacenar información en archivos de servidor externos:
Los ejemplos de la sección siguiente dan por supuesto que el usuario está utilizando el shell de mandatos de DB2, en el que no es necesario escribir "DB2" al principio de cada mandato.
Finalidad
Recupera datos de un archivo de servidor y los almacena en un localizador de CLOB.
Sintaxis
de XMLFILE a CLOB |
---|
>>-Content--(--objxml--)--------------------------------------->< |
Parámetros
Tabla 26. Parámetro de XMLFILE a CLOB
Parámetro | Tipo de datos | Descripción |
---|---|---|
objxml | XMLFILE | Es el documento XML. |
Tipo de devolución
CLOB (long_clob) como LOCATOR
long_clob es 2G para DB2 UDB.
Ejemplo
El ejemplo siguiente recupera datos de un archivo de servidor y los almacena en un localizador de 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 { /* do with the XML doc in buffer */ } } EXEC SQL CLOSE c1; EXEC SQL CONNECT RESET;
La columna ORDER de la tabla SALES_TAB es de tipo XMLFILE, por tanto la UDF Content() recupera datos de un archivo de servidor y los almacena en un localizador de CLOB.
Finalidad
Recupera un documento XML de tipo XMLVARCHAR y lo almacena en un archivo de servidor externo.
Sintaxis
desde XMLVARCHAR a archivo de servidor externo |
---|
>>-Content--(--objxml--,--nombreArchivo--)--------------------->< |
Importante: Si ya existe un archivo con el nombre especificado, la función Content() escribirá encima de él.
Nota: |
Parámetros
Tabla 27. Parámetros de la recuperación XMLVarchar a un archivo de servidor externo
Parámetro | Tipo de datos | Descripción |
---|---|---|
objxml | XMLVARCHAR | Es el documento XML. |
nombreArchivo | VARCHAR(512) | Es el nombre completamente calificado del archivo de servidor. |
Tipo de devolución
VARCHAR(512)
Ejemplo
El ejemplo siguiente recupera un documento XML de tipo XMLVARCHAR y lo almacena en un archivo de servidor externo.
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;
Finalidad
Recupera un documento XML de tipo XMLCLOB y lo almacena en un archivo de servidor externo.
Sintaxis
desde XMLCLOB a archivo de servidor externo |
---|
>>-Content--(--objxml--,--nombreArchivo--)--------------------->< |
Importante: Si ya existe un archivo con el nombre especificado, la función Content() escribirá encima de él.
Parámetros
Tabla 28. Parámetros de la recuperación desde XMLCLOB a un archivo de servidor externo
Parámetro | Tipo de datos | Descripción |
---|---|---|
objxml | XMLCLOB como LOCATOR | Es el documento XML. |
nombreArchivo | VARCHAR(512) | Es el nombre completamente calificado del archivo de servidor. |
Tipo de devolución
VARCHAR(512)
Ejemplo
El ejemplo siguiente recupera un documento XML de tipo XMLCLOB y lo almacena en un archivo de servidor externo.
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;