Función escalar XMLSERIALIZE
La función XMLSERIALIZE devuelve un valor XML serializado de los tipos de datos especificados, generados a partir del argumento expresión-XML.
El esquema es SYSIBM. El nombre de la función no puede especificarse como un nombre calificado.
- CONTENT
- Indica que se puede especificar cualquier valor XML y el resultado de la serialización se basa en este valor de entrada.
- expresión-XML
- Especifica una expresión que devuelve un valor del tipo de datos XML. El valor de la secuencia XML no debe contener un elemento que sea un nodo de atributo (SQLSTATE 2200W). Ésta es la entrada al proceso de serialización.
- AS tipo-datos
- Especifica el tipo de resultado. El atributo de longitud implícito o explícito del tipo especificado de datos de resultados debe ser suficiente para contener la salida serializada (SQLSTATE 22001).
- VERSION '1.0'
- Especifica la versión XML del valor serializado. La única versión soportada es '1.0', que se debe especificar como constante de tipo serie (SQLSTATE 42815).
- EXCLUDING XMLDECLARATION o INCLUDING XMLDECLARATION
- Especifica si se incluye una declaración XML en el resultado. El un valor predeterminado es EXCLUDING XMLDECLARATION.
- EXCLUDING XMLDECLARATION
- Especifica que una declaración XML no está incluida en el resultado.
- INCLUDING XMLDECLARATION
- Especifica que una declaración XML está incluida en el resultado. La declaración XML es la serie '< ?xml version="1.0 "encoding="UTF-8" ?>'.
- AS tipo-datos
- Especifica el tipo de datos del resultado. El atributo de longitud implícito o explícito del tipo especificado de datos de resultados debe ser suficiente para contener la salida transformada (SQLSTATE 22001).
Si el argumento documento-xml o el argumento hoja-estilos-xsl es nulo, el resultado será nulo.
La conversión de página de códigos puede producirse al almacenar cualquiera de los documentos mencionados anteriormente en una columna CHAR, VARCHAR o CLOB, lo cual podría dar como resultado una pérdida de caracteres.
El resultado tiene el tipo de datos especificado por el usuario. Una secuencia XML se convierte de forma efectiva para que tenga un único nodo de documento mediante la aplicación de XMLDOCUMENT a la expresión-XML antes de serializar los nodos XML resultantes. Si el resultado de la expresión-XML puede ser nulo, el resultado puede ser nulo; si el resultado de la expresión-XML es nulo, el resultado es el valor nulo.
Notas
- Codificación en el resultado serializado: El resultado serializado está codificado con UTF-8. Si se utiliza XMLSERIALIZE con un tipo de datos de caracteres, y se especifica la cláusula INCLUDING XMLDECLARATION, es posible que la serie de caracteres resultante que contiene XML serializado tenga una declaración de codificación XML que no coincida con la página de códigos de la serie de caracteres. Después de la serialización, que utiliza codificación UTF-8, la serie de caracteres que se devuelve del servidor al cliente se convierte en la página de códigos del cliente, y es posible que esa página de códigos sea diferente de UTF-8.
Por consiguiente, las aplicaciones deben evitar la utilización directa de XMLSERIALIZE INCLUDING XMLDECLARATION que devuelven tipos de series caracteres y deben recuperar valores XML directamente en variables del lenguaje principal para mantener la coincidencia entre la página de códigos externa y la codificación de la declaración XML. Si debe utilizarse XMLSERIALIZE en esta situación, debe especificarse un tipo BLOB para evitar la conversión de la página de códigos.
- Sintaxis alternativa: se puede especificar XML2CLOB(expresión-XML) en lugar de XMLSERIALIZE(expresión-XML AS CLOB(2G)). Solo está soportado por compatibilidad con releases anteriores de Db2® .
