Valores XML
Un valor XML representa un XML con formato correcto en forma de documento XML, contenido XML o secuencia XML.
Un valor XML que está almacenado en una tabla como valor de una columna definida con el tipo de datos XML debe ser un documento XML con formato correcto. Los valores XML se procesan en una representación interna que no es comparable a ningún valor de serie que incluya otro valor XML. El único predicado que se puede aplicar al tipo de datos XML es el predicado IS NULL.
Un valor XML se puede transformar en un valor de serie serializada que representa un documento XML utilizando la función XMLSERIALIZE. Igualmente, un valor de serie que representa un documento XML puede transformarse en un valor XML utilizando la función XMLPARSE. Un valor XML se puede analizar o serializar implícitamente cuando se intercambia con tipos de datos binarios y de serie de aplicación.
El tipo de datos XML no tiene ninguna longitud máxima definida. Tiene una longitud máxima efectiva cuando se trata como un valor de serie serializada que representa XML que es el mismo que el límite para los valores de datos LOB. Al igual que los LOB, también hay localizadores XML y variables de referencia de archivo XML.
Restricciones al utilizar valores XML: con algunas excepciones, puede utilizar valores XML en los mismos contextos en los que puede utilizar otros tipos de datos. Los valores XML son válidos en:
- CAST un marcador de parámetro, XML o NULL a XML
- XMLCAST un marcador de parámetro, XML o NULL a XML
- predicado IS NULL
- Funciones de agregación COUNT y COUNT_BIG
- Funciones escalares COALESCE, IFNULL, HEX, LENGTH, CONTAINS y SCORE
- Funciones escalares XML
- Una lista SELECT sin DISTINCT
- Cláusula INSERT VALUES, cláusula UPDATE SET y MERGE
- SET y VALUES INTO
- Parámetros del procedimiento
- Argumentos y resultados de función definidos por el usuario
- Desencadenar variables de correlación
- Valores de marcador de parámetro para una sentencia preparada dinámicamente
Los valores XML no se pueden utilizar directamente en los lugares siguientes. Cuando se permiten expresiones, se puede utilizar un valor XML, por ejemplo, como argumento de XMLSERIALIZE:
- Una lista SELECT que contiene la palabra clave DISTINCT
- Una cláusula GROUP BY
- Una cláusula ORDER BY
- Una subselección de una selección completa que no es UNION ALL
- Un predicado básico, cuantificado, BETWEEN, DISTINCT, IN o LIKE
- Una función de agregación con la palabra clave DISTINCT
- Una clave primaria, exclusiva o foránea
- Una restricción de comprobación
- Una columna de índice
Ningún idioma de host tiene un tipo de datos incorporado para el tipo de datos XML.
Para obtener información sobre el modelo de datos XML y los valores XML, consulte Programación XML de SQL.
Determinación del CCSID para XML
Los datos XML se pueden definir con cualquier CCSID EBCDIC de un solo byte o mixto o un CCSID Unicode de 1208, 1200 o 13488. 65535 no está permitido como CCSID para datos XML. El CCSID puede especificarse explícitamente al definir un tipo de datos XML. Si no se especifica explícitamente, el CCSID se asignará utilizando el valor de la opción de archivo SQL_XML_DATA_CCSID QAQQINI. Si este valor no se ha establecido, el valor predeterminado es 1208 (UTF-8).
El CCSID se establecerá para los tipos de datos XML utilizados en las sentencias de esquema SQL cuando se ejecute la sentencia.
- Si es XML AS DBCLOB, el CCSID será 1200.
- Si es XML AS CLOB y el valor de SQL_XML_DATA_CCSID QAQQINI es 1200 o 13488, el CCSID será 1208.
- De lo contrario, se utilizará el valor SQL_XML_DATA_CCSID QAQQINI como CCSID.
Puesto que todas las funciones XMLPARSE implícitas y explícitas se realizan utilizando UTF-8 (1208), la definición de datos en este CCSID elimina la necesidad de convertir los datos a UTF-8.