XMLSERIALIZE 标量函数
XMLSERIALIZE 函数返回从 XML-expression 自变量生成的指定数据类型的序列化 XML 值。
该模式是 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® 发行版兼容。
