XMLSERIALIZE 标量函数

XMLSERIALIZE 函数返回从 XML-expression 自变量生成的指定数据类型的序列化 XML 值。

Read syntax diagramSkip visual syntax diagramXMLSERIALIZE(CONTENTXML-expressionASdata-type VERSION'1.0'EXCLUDING XMLDECLARATIONINCLUDING XMLDECLARATION1)
data-type
Read syntax diagramSkip visual syntax diagram CHARACTERCHAR(1)(integerOCTETSCODEUNITS32)VARCHARCHARACTERCHARVARYING(integerOCTETSCODEUNITS32)CLOBCHARACTERCHARLARGE OBJECT(1M)(integerKMGOCTETSCODEUNITS32)BLOBBINARYLARGE OBJECT(1M)(integerKMG)
Notes:
  • 1 The same clause must not be specified more than once.

该模式是 SYSIBM。 不能将函数名指定为限定名。

CONTENT
指定可以指定任何 XML 值,并且序列化的结果基于此输入值。
XML-expression
指定返回数据类型为 XML 的值的表达式。 XML 序列值不得包含作为属性节点的项 (SQLSTATE 2200W)。 这是序列化过程的输入。
AS 数据类型
指定结果类型。 指定结果数据类型的隐式或显式长度属性必须足以包含序列化输出 (SQLSTATE 22001)。
VERSION "1.0"
指定序列化值的 XML 版本。 唯一受支持的版本是必须指定为字符串常量的 "1.0" (SQLSTATE 42815)。
EXCLUDING XMLDECLARATION INCLUDING XMLDECLARATION
指定是否在结果中包含 XML 声明。 缺省值为排除XML声明。
排除XML声明
指定结果中不包含 XML 声明。
包括XML声明
指定结果中包含 XML 声明。 XML 声明是字符串'<?xml version=" 1.0 " encoding=" UTF-8 "? >'。
AS 数据类型
指定结果数据类型。 指定的结果数据类型的隐式或显式长度属性必须足够长,能够包含变换后的输出 (SQLSTATE 22001)。

如果 xml-document 参数或 xsl-stylesheet 参数为空,那么结果将为空。

将上述任何文档存储在 CHAR、VARCHAR 或 CLOB 列中时可能会导致代码页转换,从而可能导致字符丢失。

结果具有用户指定的数据类型。 通过在序列化生成的 XML 节点之前将 XMLDOCUMENT 应用于 XML-expression ,可将 XML 序列有效地转换为具有单个文档节点。 如果 XML-expression 的结果可以为空,那么结果可以为空; 如果 XML-expression 的结果为空,那么结果为空值。

注意

  • 序列化结果中的编码: 序列化结果使用 UTF-8进行编码。 如果将 XMLSERIALIZE 与字符数据类型配合使用,并且指定了 INCLUDING XML声明子句,那么生成的包含序列化 XML 的字符串可能具有与字符串的代码页不匹配的 XML 编码声明。 在使用 UTF-8 编码的序列化之后,从服务器返回到客户机的字符串将转换为客户机的代码页,并且该代码页可能与 UTF-8不同。

    因此,应用程序应避免直接使用返回字符串类型的 XMLSERIALIZE INCLUDING XML声明,并应将 XML 值直接检索到主变量中,以保持外部代码页与 XML 声明中的编码之间的匹配。 如果必须在此情况下使用 XMLSERIALIZE ,那么应指定 BLOB 类型以避免代码页转换。

  • 语法备用: 可以指定 XML2CLOB (XML-expression) 来代替 XMLSERIALIZE (XML-expression AS CLOB (2G))。 仅支持与先前的 Db2® 发行版兼容。