XMLNAMESPACES 声明
XMLNAMESPACES 声明通过自变量构造名称空间声明。
Notes:
- 1 DEFAULT or NO DEFAULT can only be specified once in arguments of XMLNAMESPACES.
该模式是 SYSIBM。 不能将声明名指定为限定名。
此声明只能用作特定函数(如 XMLELEMENT、XMLFOREST 和 XMLTABLE)的自变量。 结果是一个或多个 XML 名称空间声明,它们包含每个非空输入值的名称空间作用域。
- 名称空间 URI
- 指定名称空间通用资源标识(URI)作为 SQL 字符串常量。 如果此字符串常量用于 namespace-prefix,那么一定不能为空 (SQLSTATE 42815)。 命名空间前缀
- 指定名称空间前缀。 前缀是必须为 XML NCName 格式的 SQL 标识 (SQLSTATE 42634)。 请参阅 W3C XML 名称空间规范 ,以获取有关有效名称的更多详细信息。 前缀不能为
xml或xmlns,并且前缀在名称空间声明列表中必须唯一 (SQLSTATE 42635)。 - 缺省 namespace-uri
- 指定要在此名称空间声明的作用域中使用的缺省名称空间。 除非在嵌套作用域中被另一 DEFAULT 声明或 NO DEFAULT 声明覆盖,否则 namespace-uri 将应用于该作用域中的未限定名称。
- NO DEFAULT
- 指定不在此名称空间声明的作用域中使用缺省名称空间。 除非在嵌套作用域中被 DEFAULT 声明覆盖,否则该作用域中没有缺省名称空间。
结果的数据类型为 XML。 结果是每个指定名称空间的 XML 名称空间声明。 结果不能为空。
示例
注: XMLNAMESPACES 不会在输出中插入空格或换行符。 已对所有示例输出进行格式化来增强可读性。
- 示例 1:将生成 XML 元素 adm:employee 和 XML 属性 adm:department,这两项都与前缀为 adm 的名称空间相关联。
此查询将生成以下结果:SELECT EMPNO, XMLELEMENT( NAME "adm:employee", XMLNAMESPACES( 'http://www.adm.com' AS "adm" ), XMLATTRIBUTES( WORKDEPT AS "adm:department" ), LASTNAME ) FROM EMPLOYEE WHERE JOB = 'ANALYST'000130 <adm:employee xmlns:adm="http://www.adm.com" adm:department="C01"> QUINTANA</adm:employee> 000140 <adm:employee xmlns:adm="http://www.adm.com" adm:department="C01"> NICHOLLS</adm:employee> 200140 <adm:employee xmlns:adm="http://www.adm.com" adm:department="C01"> NATZ</adm:employee> - 示例 2:将生成 XML 元素“employee”和子元素“job”,XML 元素“employee”与缺省名称空间相关联,子元素“job”不使用缺省名称空间,但其子元素“department”使用缺省名称空间。
此查询将生成以下结果:SELECT EMP.EMPNO, XMLELEMENT( NAME "employee", XMLNAMESPACES( DEFAULT 'http://hr.org' ), EMP.LASTNAME, XMLELEMENT( NAME "job", XMLNAMESPACES( NO DEFAULT ), EMP.JOB, XMLELEMENT( NAME "department", XMLNAMESPACES( DEFAULT 'http://adm.org' ), EMP.WORKDEPT ) ) ) FROM EMPLOYEE EMP WHERE EMP.EDLEVEL = 12000290 <employee xmlns="http://hr.org">PARKER<job xmlns="">OPERATOR <department xmlns="http://adm.org">E11</department></job></employee> 000310 <employee xmlns="http://hr.org">SETRIGHT<job xmlns="">OPERATOR <department xmlns="http://adm.org">E11</department></job></employee> 200310 <employee xmlns="http://hr.org">SPRINGER<job xmlns="">OPERATOR <department xmlns="http://adm.org">E11</department></job></employee>
