Las funciones de extracción extraen el contenido de un elemento o el valor de un atributo en un documento XML y devuelven los tipos de datos SQL especificados. El XML Extender proporciona un juego de funciones de extracción para diversos tipos de datos de SQL. Las funciones de extracción utilizan dos parámetros de entrada. El primer parámetro es el UDT del XML Extender, que puede ser uno de los UDT de XML. El segundo parámetro es la vía de ubicación, que especifica el elemento o atributo de XML. Cada función de extracción devuelve el valor o contenido especificado por la vía de ubicación.
Debido a que algunos valores de elemento o atributo aparecen varias veces, las funciones de extracción devuelven un valor escalar o un valor de tabla; este último se denomina función de tabla.
El XML Extender proporciona las funciones de extracción siguientes:
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
Extrae el contenido de un elemento o valor de un atributo en un documento XML y devuelve datos de tipo INTEGER.
Sintaxis
Función escalar |
---|
>>-extractInteger----(--objxml--,--vía--)---------------------->< |
Función de tabla |
---|
>>-extractIntegers----(--objxml--,--vía--)--------------------->< |
Parámetros
Tabla 29. Parámetros de las funciones extractInteger y extractIntegers
Parámetro | Tipo de datos | Descripción |
---|---|---|
objxml |
XMLVARCHAR, XMLFILE o XMLCLOB | Es el nombre de la columna. |
vía | VARCHAR | Es la vía de ubicación del elemento o atributo. |
Tipo de devolución
INTEGER
Nombre de columna devuelta (función de tabla)
returnedInteger
Ejemplo
Ejemplo de función escalar:
En el ejemplo siguiente, se devuelve un valor cuando el valor de atributo de clave = "1". El valor se extrae como un INTEGER (ENTERO).
SELECT * from table(db2xml.extractInteger(Order, ('c:\dxx\samples\xml\getstart.xml'), '/Order/[@key="1"]')) as x;
Ejemplo de función de tabla:
En el ejemplo siguiente, cada clave de pedido para los pedidos de ventas se convierte automáticamente de un tipo INTEGER (ENTERO) a 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;
Finalidad
Extrae el contenido de un elemento o valor de un atributo en un documento XML y devuelve datos de tipo SMALLINT.
Sintaxis
Función escalar |
---|
>>-extractSmallint----(--objxml--,--vía--)--------------------->< |
Función de tabla |
---|
>>-extractSmallints----(--objxml--,--vía--)-------------------->< |
Parámetros
Tabla 30. Parámetros de las funciones extractSmallint y extractSmallints
Parámetro | Tipo de datos | Descripción |
---|---|---|
objxml |
XMLVARCHAR, XMLFILE o XMLCLOB | Es el nombre de la columna. |
vía | VARCHAR | Es la vía de ubicación del elemento o atributo. |
Tipo de devolución
SMALLINT
Nombre de columna devuelta (función de tabla)
returnedSmallint
Ejemplo
En el ejemplo siguiente, el valor de Quantity en todos los pedidos de ventas se extrae como SMALLINT
SELECT * from table(db2xml.extractSmallints(Order, ('c:\dxx\samples\xml\getstart.xml'), '/Order/Part/Quantity')) as x;
Finalidad
Extrae el contenido de un elemento o valor de un atributo en un documento XML y devuelve datos de tipo DOUBLE.
Sintaxis
Función escalar |
---|
>>-extractDouble----(--objxml--,--vía--)----------------------->< |
Función de tabla |
---|
>>-extractDoubles----(--objxml--,--vía--)---------------------->< |
Parámetros
Tabla 31. Parámetros de las funciones extractDouble y extractDoubles
Parámetro | Tipo de datos | Descripción |
---|---|---|
objxml |
XMLVARCHAR, XMLFILE o XMLCLOB | Es el nombre de la columna. |
vía | VARCHAR | Es la vía de ubicación del elemento o atributo. |
Tipo de devolución
DOUBLE
Nombre de columna devuelta (función de tabla)
returnedDouble
Ejemplo
Ejemplo de función de tabla:
En el ejemplo siguiente, el valor de ExtendedPrice en cada parte del pedido de ventas se extrae como DOUBLE.
SELECT * from table(db2xml.extractDoubles(Order, ('c:\dxx\samples\xml\getstart.xml'), '/Order/Part/ExtendedPrice')) as x;
Ejemplo de función escalar:
El ejemplo siguiente convierte automáticamente el precio de un pedido de un tipo DOUBLE a a 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;
Finalidad
Extrae el contenido de un elemento o valor de un atributo en un documento XML y devuelve datos de tipo REAL.
Sintaxis
Función escalar |
---|
>>-extractReal----(--objxml--,--vía--)------------------------->< |
Función de tabla |
---|
>>-extractReals----(--objxml--,--vía--)------------------------>< |
Parámetros
Tabla 32. Parámetros de las funciones extractReal y extractReals
Parámetro | Tipo de datos | Descripción |
---|---|---|
objxml |
XMLVARCHAR, XMLFILE o XMLCLOB | Es el nombre de la columna. |
vía | VARCHAR | Es la vía de ubicación del elemento o atributo. |
Tipo de devolución
REAL
Nombre de columna devuelta (función de tabla)
returnedReal
Ejemplo
En el ejemplo siguiente, el valor de Tax se extrae como REAL.
SELECT * from table(db2xml.extractReals(Order, ('c:\dxx\samples\xml\getstart.xml'), '/Order/Part/Tax')) as x;
Finalidad
Extrae el contenido de un elemento o valor de un atributo en un documento XML y devuelve datos de tipo CHAR.
Sintaxis
Función escalar |
---|
>>-extractChar----(--objxml--,--vía--)------------------------->< |
Función de tabla |
---|
>>-extractChars----(--objxml--,--vía--)------------------------>< |
Parámetros
Tabla 33. Parámetros de las funciones extractChar y extractChars
Parámetro | Tipo de datos | Descripción |
---|---|---|
objxml |
XMLVARCHAR, XMLFILE o XMLCLOB | Es el nombre de la columna. |
vía | VARCHAR | Es la vía de ubicación del elemento o atributo. |
Tipo de devolución
CHAR
Nombre de columna devuelta (función de tabla)
returnedChar
Ejemplo
En el ejemplo siguiente, el valor de Color se extrae como CHAR.
SELECT * from table(db2xml.extractChars(Order, ('c:\dxx\samples\xml\getstart.xml'), '/Order/Part/@Color')) as x;
Finalidad
Extrae el contenido de un elemento o valor de un atributo en un documento XML y devuelve datos de tipo VARCHAR.
Sintaxis
Función escalar |
---|
>>-extractVarchar----(--objxml--,--vía--)---------------------->< |
Función de tabla |
---|
>>-extractVarchars----(--objxml--,--vía--)--------------------->< |
Parámetros
Tabla 34. Parámetros de las funciones extractVarchar y extractVarchars
Parámetro | Tipo de datos | Descripción |
---|---|---|
objxml |
XMLVARCHAR, XMLFILE o XMLCLOB | Es el nombre de la columna. |
vía | VARCHAR | Es la vía de ubicación del elemento o atributo. |
Tipo de devolución
VARCHAR(4K)
Nombre de columna devuelta (función de tabla)
returnedVarchar
Ejemplo
Suponga una base de datos que contiene más de 1000 documentos XML, los cuales están almacenados en la columna ORDER de la tabla SALES_TAB. Desea encontrar los clientes que han solicitado artículos cuyo precio global (ExtendedPrice) sea mayor que 2500,00. La siguiente sentencia de SQL utiliza la UDF de extracción en la cláusula SELECT:
SELECT extractVarchar(Order, '/Order/Customer/Name') from sales_order_view WHERE price > 2500.00
La UDF extractVarchar() utiliza la columna ORDER como entrada y la vía de ubicación /Order/Customer/Name como identificador de selección. La UDF devuelve los nombres de los clientes. Mediante la cláusula WHERE, la función de extracción evalúa sólo los pedidos cuyo precio global sea mayor que 2500,00.
Finalidad
Extrae el contenido de un elemento o valor de un atributo en un documento XML y devuelve datos de tipo CLOB.
Sintaxis
Función escalar |
---|
>>-extractCLOB----(--objxml--,--vía--)------------------------->< |
Función de tabla |
---|
>>-extractCLOBs----(--objxml--,--vía--)------------------------>< |
Parámetros
Tabla 35. Parámetros de las funciones extractCLOB y extractCLOBs
Parámetro | Tipo de datos | Descripción |
---|---|---|
objxml |
XMLVARCHAR, XMLFILE o XMLCLOB | Es el nombre de la columna. |
vía | VARCHAR | Es la vía de ubicación del elemento o atributo. |
Tipo de devolución
CLOB(10K)
Nombre de columna devuelta (función de tabla)
returnedCLOB
Ejemplo
En este ejemplo, todos los elementos de la parte se extraen de un pedido de compra.
SELECT returnedCLOB as part from table(db2xml.extractCLOBs(db2xml.XMLFile('c:\dxx\samples\xml\getstart.xml'), '/Order/Part')) as x;
Finalidad
Extrae el contenido de un elemento o valor de un atributo en un documento XML y devuelve datos de tipo DATE.
Sintaxis
Función escalar |
---|
>>-extractDate----(--objxml--,--vía--)------------------------->< |
Función de tabla |
---|
>>-extractDates----(--objxml--,--vía--)------------------------>< |
Parámetros
Tabla 36. Parámetros de las funciones extractDate y extractDates
Parámetro | Tipo de datos | Descripción |
---|---|---|
objxml |
XMLVARCHAR, XMLFILE o XMLCLOB | Es el nombre de la columna. |
vía | VARCHAR | Es la vía de ubicación del elemento o atributo. |
Tipo de devolución
DATE
Nombre de columna devuelta (función de tabla)
returnedDate
Ejemplo
En el ejemplo siguiente, el valor de ShipDate se extrae como DATE.
SELECT * from table(db2xml.extractDates(Order, ('c:\dxx\samples\xml\getstart.xml'), '/Order/Part/Shipment/ShipDate')) as x;
Finalidad
Extrae el contenido de un elemento o valor de un atributo en un documento XML y devuelve datos de tipo TIME.
Sintaxis
Función escalar |
---|
>>-extractTime----(--objxml--,--vía--)------------------------->< |
Función de tabla |
---|
>>-extractTimes----(--objxml--,--vía--)------------------------>< |
Parámetros
Tabla 37. Parámetros de las funciones extractTime y extractTimes
Parámetro | Tipo de datos | Descripción |
---|---|---|
objxml |
XMLVARCHAR, XMLFILE o XMLCLOB | Es el nombre de la columna. |
vía | VARCHAR | Es la vía de ubicación del elemento o atributo. |
Tipo de devolución
TIME
Nombre de columna devuelta (función de tabla)
returnedTime
Ejemplo
Este ejemplo utiliza los archivos de ejemplo de libros. Busca en el archivo XML book.xml la hora en que se ha puesto precio a los libros y devuelve los valores como 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
Finalidad
Extrae el contenido de un elemento o valor de un atributo en un documento XML y devuelve datos de tipo TIMESTAMP.
Sintaxis
Función escalar |
---|
>>-extractTimestamp----(--objxml--,--vía--)-------------------->< |
Función de tabla |
---|
>>-extractTimestamps----(--objxml--,--vía--)------------------->< |
Parámetros
Tabla 38. Parámetros de las funciones extractTimestamp y extractTimestamps
Parámetro | Tipo de datos | Descripción |
---|---|---|
objxml |
XMLVARCHAR, XMLFILE o XMLCLOB | Es el nombre de la columna. |
vía | VARCHAR | Es la vía de ubicación del elemento o atributo. |
Tipo de devolución
TIMESTAMP
Nombre de columna devuelta (función de tabla)
returnedTimestamp
Ejemplo
Este ejemplo utiliza los archivos de ejemplo de libros. Busca en el archivo XML book.xml la hora que especifica cuándo se ha puesto precio a cada libro y extrae el valor como 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