XMLFOREST
XMLFOREST 函数返回作为 XML 元素序列的 XML 值。
- xmlnamespace-声明
- 指定作为 XMLNAMESPACES 声明结果的 XML 名称空间声明。 声明的名称空间在 XMLFOREST 函数作用域中。 不管是否出现在另一子查询中,这些名称空间都适用于 XMLFOREST 函数内的任何嵌套 XML 函数。 有关声明 XML 名称空间的更多信息,请参阅 XMLNAMESPACES 。
- element-content-expression
- 指定用于返回用于所生成 XML 元素的内容的值的表达式。 表达式的数据类型不得为 ROWID 或 DATALINK。 如果表达式不是简单列引用,那么必须指定 element-name 。
- AS 元素名称
- 指定用于 XML 元素名称的标识。
- 选项
- 指定 NULL 值,二进制数据和位数据的结果选项。 element-content-expression中显示的 XMLELEMENT 或 XMLFOREST 函数不会继承这些选项。
- NULL ON NULL 或 EMPTY ON NULL
- 指定如果每个 element-content-expression 的值都是空值,那么是返回空值还是返回空元素。 此选项仅影响 element-content-expression 自变量的空处理。 缺省值为
NULL ON NULL。
- NULL ON NULL
- 如果每个 element-content-expression 的值为空,那么将返回空值。
- EMPTY ON NULL
- 如果每个 element-content-expression 的值为空,那么将返回空元素。
- XMLBINARY USING BASE64 或 XMLBINARY USING HEX
- 指定二进制输入数据,具有 FOR BIT DATA 属性的字符串数据, ROWID 或基于其中一种类型的单值类型的假定编码。 该编码适用于元素内容或属性值。 缺省值为
XMLBINARY USING BASE64。
- XMLBINARY USING BASE64
- 根据对 XML 模式类型 xs:base64Binary 编码的定义,指定采用编码为基本 64 位字符。 基本 64 位代码使用 US-ASCII 的由 65 个字符组成的子集(10 个数字、26 个小写字符、26个大写字符以及“+”和“/”)来表示每个二进制数据或位数据的 6 位以及子集中的一个可打印字符。 这些字符已被选中,所以它们是以可通用的方式表示的。 使用此方法时,编码数据的大小比原始二进制数据或位数据大 33%。
- XMLBINARY USING HEX
- 根据对 XML 模式类型 xs:hexBinary 编码的定义,指定采用编码为十六进制字符。 十六进制编码使用两个十六进制字符来表示每个字节(8 位)。 使用此方法时,编码数据的大小是原始二进制数据或位数据的两倍。
此函数的结果是 XML 值。 如果任何 element-content-expression 的结果可以为空,那么结果可以为空; 如果每个 element-content-expression 的结果为空且 NULL ON NULL 选项生效,那么结果为空值。
XMLFOREST 函数可使用 XMLCONCAT 和 XMLELEMENT 来表示。 例如,下列两个表达式在语义上是等价的。
XMLFOREST(xmlnamespaces-declaration, arg1 AS name1, arg2 AS name2, ...)
XMLCONCAT(XMLELEMENT(NAME name1, xmlnamespaces-declaration, arg1),
XMLELEMENT(NAME name2, xmlnamespaces-declaration, arg2),
... )构造将作为另一元素(用于定义缺省名称空间)的内容进行复制的元素时,应在被复制元素中显式取消声明缺省名称空间,以避免因为从新的父代元素继承缺省名称空间而可能导致的错误。 使用预定义的名称空间前缀 ("xs" , "xsi" , "xml" 和 "sqlxml") 时也必须显式声明。
示例
注: XMLFOREST 不会在输出中插入空格或换行符。 所有示例输出都将格式化以增强可读性。
- 使用缺省名称空间构造元素群。
SELECT EMPNO, XMLFOREST(XMLNAMESPACES(DEFAULT 'http://hr.org', 'http://fed.gov' AS "d"), LASTNAME, JOB AS "d:job") AS "Result" FROM EMPLOYEE WHERE EDLEVEL = 12此查询将生成以下结果:
EMPNO Result 000290 <LASTNAME xmlns:"http://hr.org" xmlns:d="http://fed.gov">PARKER </LASTNAME> <d:job xmlns:"http://hr.org" xmlns:d="http://fed.gov">OPERATOR</d:job> 000310 <LASTNAME xmlns:"http://hr.org" xmlns:d="http://fed.gov">SETRIGHT </LASTNAME> <d:job xmlns:"http://hr.org" xmlns:d="http://fed.gov">OPERATOR</d:job> 200310 <LASTNAME xmlns:"http://hr.org" xmlns:d="http://fed.gov">SPRINGER </LASTNAME> <d:job xmlns:"http://hr.org" xmlns:d="http://fed.gov">OPERATOR</d:job>
