XMLNAMESPACES 声明

XMLNAMESPACES 声明通过自变量构造名称空间声明。

xmlnamespaces-declaration
Read syntax diagramSkip visual syntax diagramXMLNAMESPACES( ,namespace-uriASnamespace-prefixDEFAULTnamespace-uri1NO DEFAULT )
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 名称空间规范 ,以获取有关有效名称的更多详细信息。 前缀不能为 xmlxmlns,并且前缀在名称空间声明列表中必须唯一 (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 = 12
    此查询将生成以下结果:
    000290 <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>