IBM Books

Administración y programación


Funciones de extracción

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.

extractInteger() y extractIntegers()

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;

extractSmallint() y extractSmallints()

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;

extractDouble() y extractDoubles()

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;

extractReal() y extractReals()

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;

extractChar() y extractChars()

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;

extractVarchar() y extractVarchars()

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.

extractCLOB() y extractCLOBs()

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;

extractDate() y extractDates()

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;

extractTime() y extractTimes()

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
 

extractTimestamp() y extractTimestamps()

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
 


[ Principio de página | Página anterior | Página siguiente | Contenido | Índice ]