Especificación XMLCAST
La especificación XMLCAST devuelve el operando cast (el primer operando) convertido al tipo especificado por el tipo de datos. XMLCAST da soporte a conversiones que requieren valores XML, incluidas las conversiones entre los tipos de datos que no son XML y el tipo de datos XML. Si la conversión no está soportada se devuelve un error (SQLSTATE 22003).
- expresión
- Si el operando cast es una expresión (distinta del marcador de parámetro o NULL), el resultado es el valor del argumento convertido al tipo de datos de destino especificado. El tipo de datos de destino o la expresión deben ser del tipo de datos XML (SQLSTATE 42846).
- Nulo
- Si el operando cast es la palabra clave NULL, el tipo de datos de destino debe ser el tipo de datos XML (SQLSTATE 42846). El resultado es un valor XML nulo.
- marcador-parámetro
- Si el operando cast es un marcador de parámetro, el tipo de datos de destino debe ser XML (SQLSTATE 42846). Un marcador de parámetro suele considerarse que es una expresión, pero en este caso se documenta por separado porque tiene un significado especial. Si el operando cast es un marcador de parámetro, el tipo de datos especificado se considera una promesa de que la sustitución se podrá asignar al tipo de datos especificado (utilizando la asignación de almacenamiento). Un marcador de parámetro de este tipo se considera un marcador de parámetro con tipo, y se trata como cualquier otro valor con tipo para fines de resolución de función, una operación de descripción en una lista de selección o una asignación de columna.
- tipo-datos
- El nombre de un tipo de datos SQL existente. Si el nombre no está calificado, la vía de acceso de SQL se utiliza para realizar la resolución del tipo de datos. Si un tipo de datos tiene atributos asociados como, por ejemplo, la longitud o precisión y la escala, estos atributos deben incluirse cuando se especifica un valor para tipo-datos. CHAR toma por omisión una longitud de 1 y DECIMAL toma por omisión una precisión de 5 y una escala de 0 si no se especifican. Las restricciones sobre los tipos de datos soportados se basan en el operando cast especificado.
- Para un operando cast que sea una expresión, los tipos de datos de destino a los que se da soporte dependen del tipo de datos del operando cast (tipo de datos fuente).
- Para un operando cast que sea la palabra clave NULL, el tipo de datos de destino debe ser XML.
- Para un operando cast que sea un marcador de parámetro, el tipo de datos de destino debe ser XML.
Nota: Soporte en bases de datos no Unicode: cuando se utiliza XMLCAST para convertir un valor XML en un tipo de datos SQL, se realiza la conversión de página de códigos. La codificación de la expresión de conversión se convierte desde UTF-8 a la página de códigos de la base de datos. Como consecuencia de esta conversión, los caracteres de la expresión original que no estén presentes en la página de códigos de la base de datos se sustituirán por caracteres de sustitución.
ejemplos
- Crear un valor XML nulo.
XMLCAST(NULL AS XML) - Convertir un valor extraído de una expresión XMLQUERY en un INTEGER:
XMLCAST(XMLQUERY('$m/PRODUCT/QUANTITY' PASSING xmlcol AS "m") AS INTEGER) - Convertir un valor extraído de una expresión XMLQUERY en una serie de caracteres de longitud variable:
XMLCAST(XMLQUERY('$m/PRODUCT/ADD-TIMESTAMP' PASSING xmlcol AS "m") AS VARCHAR(30)) - Convertir un valor extraído de una subconsulta escalar SQL en un valor XML.
XMLCAST((SELECT quantity FROM product AS p WHERE p.id = 1077) AS XML)
