科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件DB2 基础: SQL/XML 发布函数简介

DB2 基础: SQL/XML 发布函数简介

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

·DB2 基础: SQL/XML 发布函数简介

作者: 来源:中国软件网 2008年6月23日

关键字: DB2 SQL XML 软件

  • 评论
  • 分享微博
  • 分享邮件

connect reset

  表 1. 对 XMLELEMENT 函数的输出序列化后的结果,可用于 XML 文档

  EMPNOFIRST_NAMELAST_NAMEPHONENODEPTNODEPARTMENT

  000010CHRISTINEHAAS3978A00SPIFFY COMPUTER SERVICE

  000050JOHNGEYER6789E01SUPPORT SERVICES

  000110VINCENZOLUCCHESSI3490A00SPIFFY COMPUTER SERVICE

  000120SEANO'CONNELL2167A00SPIFFY COMPUTER SERVICE

  000200DAVIDBROWN4501D11MANUFACTURING SYSTEMS

  000220JENNIFERLUTZ0672D11MANUFACTURING SYSTEMS

  000230JAMESJEFFERSON2094D21ADMINISTRATION SYSTEMS

  000250DANIELSMITH0961D21ADMINISTRATION SYSTEMS

  000280ETHELSCHNEIDER8997E11OPERATIONS

  000310MAUDESETRIGHT3332E11OPERATIONS

  000320RAMLALMEHTA9990E21SOFTWARE SUPPORT

  000340JASONGOUNOT5698E21SOFTWARE SUPPORT

  XMLFOREST

  XMLFOREST 函数构造一个 XML 元素节点序列(森林)。XMLFOREST 是一个标量函数,返回值和参数一样都是内部 XML 数据类型。

  清单 2 中的例子在 XMLELEMENT 函数中嵌套使用 XMLFOREST 函数生成 XML 表格数据。只需调用 XMLFOREST 函数一次,就能生成嵌套在表行(

)元素中的表格单元(

  

  ...

  connect reset

  表 2. 对 XMLFOREST 函数的输出序列化后可用于 XML 文档

  EMPNOFIRST_NAMELAST_NAMEPHONENODEPTNODEPARTMENT

  000010CHRISTINEHAAS3978A00SPIFFY COMPUTER SERVICE DIV.

  000050JOHNGEYER6789E01SUPPORT SERVICES

  000110VINCENZOLUCCHESSI3490A00SPIFFY COMPUTER SERVICE DIV.

  000120SEANO'CONNELL2167A00SPIFFY COMPUTER SERVICE DIV.

  000200DAVIDBROWN4501D11MANUFACTURING SYSTEMS

  000220JENNIFERLUTZ0672D11MANUFACTURING SYSTEMS

  000230JAMESJEFFERSON2094D21ADMINISTRATION SYSTEMS

  000250DANIELSMITH0961D21ADMINISTRATION SYSTEMS

  000280ETHELSCHNEIDER8997E11OPERATIONS

  000310MAUDESETRIGHT3332E11OPERATIONS

  000320RAMLALMEHTA9990E21SOFTWARE SUPPORT

  000340JASONGOUNOT5698E21SOFTWARE SUPPORT

  XMLATTRIBUTES

  XMLATTRIBUTES 函数为 XML 元素节点构造一个或多个 XML 属性节点。XMLATTRIBUTES 是一个标量函数,返回 XML 类型的值。

  清单 3 中的例子结合使用 XMLATTRIBUTES 和 XMLELEMENT 函数生成 XML 表格数据。这里,生成的三个表格单元(

  

  

  ...

  connect reset

  该例中,XMLELEMENT 函数调用 XMLATTRIBUTES 函数为输出的三列定义列对齐属性。表 3 显示了序列化的结果。

  表 3. XMLELEMENT 函数结果序列化后的片段

  EMPNOFIRST_NAMELAST_NAMEPHONENODEPTNODEPARTMENT

  000010CHRISTINEHAAS3978A00SPIFFY COMPUTER SERVICE

  000050JOHNGEYER6789E01SUPPORT SERVICES

  000110VINCENZOLUCCHESSI3490A00SPIFFY COMPUTER SERVICE

  000120SEANO'CONNELL2167A00SPIFFY COMPUTER SERVICE

  000200DAVIDBROWN4501D11MANUFACTURING SYSTEMS

  000220JENNIFERLUTZ0672D11MANUFACTURING SYSTEMS

  XMLCONCAT

  XMLCONCAT 函数连接两个或多个 XML 值(XML 数据类型的表达式)。XMLCONCAT 是一个标量函数,返回值和参数一样都是内部 XML 数据类型。

  清单 4 中的例子使用 XMLCONCAT 和 XMLELEMENT 函数生成 XML 表格数据。这里将生成的两个表格单元(

  ...

  connect reset

  该例中,XMLELEMENT 函数调用 XMLCONCAT 连接一对嵌套的 XML 元素节点。表 4 显示了序列化后的结果。

  表 4. XMLELEMENT 函数结果序列化后的片段

  FIRST_NAMELAST_NAME

  BRUCEADAMSON

  DAVIDBROWN

  JOHNGEYER

  JASONGOUNOT

  CHRISTINEHAAS

  EILEENHENDERSON

  JAMESJEFFERSON

  SYBILJOHNSON

  WILLIAMJONES

  SALLYKWAN

  WINGLEE

  VINCENZOLUCCHESSI

  XMLAGG

  XMLAGG 函数在生成的 XML 值中将 XML 值聚合为一系列的项。XMLAGG 是一种聚合(列)函数。

  清单 5 中的例子使用 XMLAGG 和 XMLELEMENT 函数生成 XML 表格数据。这里对每个表行(

)元素实例,聚合三个生成的表格单元(

  

  connect reset

  该例中,XMLELEMENT 函数调用 XMLAGG 聚合嵌套的 XML 元素节点。表 5 显示了序列化后的结果。

  表 5. 序列化后的 XMLELEMENT 函数输出

  DEPTNO123

  A00HAASLUCCHESSIO'CONNELL

  C01KWANNICHOLLSQUINTANA

  XMLNAMESPACES

  XMLNAMESPACES 函数从参数中构造 XML 名称空间声明。声明在 XMLELEMENT 和 XMLFOREST 函数生成的元素的作用范围内。XMLNAMESPACES 是一个标量函数,返回 XML 类型的值。

  XML 名称空间可用于限定元素或属性名,将其与特定的统一资源标识符(URI)联系在一起。它是在 XML 文档中用作元素类型和属性名的名称的集合。XML 名称空间保证元素和属性在给定文档范围之外有统一的名称,用于避免应用程序在处理类似的标记和属性时出现误解。

  清单 6 中的例子结合使用 XMLNAMESPACES 和 XMLELEMENT 函数。这里,嵌套在表格单元(

)元素中的 “emp” XML 元素节点,有一个设为空字符串的默认名称空间,相当于没有默认名称空间。清单 6 还显示了该查询返回的前两条记录。表 6 显示了插入 XML 表格元素后的转换结果。

  清单 6. XMLNAMESPACES 函数可用于构造 XML 名称空间声明

  connect to sample

  ...

  select xmlserialize(

  content xmlelement(

  name "tr",

  xmlelement(

  name "td",

  xmlelement(

  name "emp",

  xmlnamespaces(

  no default

  ), lastname

  )

  )

  )

  as clob(48)

  ) as "result"

  from employee

  order by lastname;

  

  

)元素。清单 2 还显示了该查询返回的第一条记录,同样分在两行中。表 2 显示了插入 XML 表格元素后的转换结果。

  清单 2. 使用 XMLFOREST 函数从关系数据生成 XML 表格元素

  connect to sample

  ...

  select xmlserialize(

  content xmlelement(

  name "tr",

  xmlforest(

  e.empno as "td",

  e.firstnme as "td",

  e.lastname as "td",

  e.phoneno as "td",

  d.deptno as "td",

  d.deptname as "td"

  )

  )

  as clob(144)

  ) as "result"

  from employee e, department d

  where e.workdept = d.deptno and year(hiredate) < 1970;

  

000010

CHRISTINE

HAAS

3978

A00

SPIFFY COMPUTER SERVICE DIV.

)元素得到了列对齐属性('align="center"')。清单 3 含显示了该查询返回的第一条记录,同样显示在两行中。表 3 显示了转换后的结果插入 XML 表格元素后的情况。

  清单 3. 为 XML 元素节点构造 XML 属性节点

  connect to sample

  ...

  select xmlserialize(

  content xmlelement(

  name "tr",

  xmlelement(name "td", xmlattributes('center' as "align"), e.empno),

  xmlelement(name "td", e.firstnme),

  xmlelement(name "td", e.lastname),

  xmlelement(name "td", xmlattributes('center' as "align"), e.phoneno),

  xmlelement(name "td", xmlattributes('center' as "align"), d.deptno),

  xmlelement(name "td", substr(d.deptname, 1, 24))

  )

  as clob(180)

  ) as "result"

  from employee e, department d

  where e.workdept = d.deptno and year(hiredate) < 1970;

  

000010

CHRISTINE

HAAS

3978

A00

SPIFFY COMPUTER SERVICE

)元素连接在一起。清单 4 还显示了该查询返回的第一条记录。表 4 显示了插入 XML 表格元素后的转换结果。

  清单 4. XMLCONCAT 函数可用于连接 XML 值,比如两个 XML 元素节点

  connect to sample

  ...

  select xmlserialize(

  content xmlelement(

  name "tr", xmlconcat(

  xmlelement(name "td", firstnme),

  xmlelement(name "td", lastname)

  )

  )

  as clob(48)

  ) as "result"

  from employee

  order by lastname;

  

BRUCE

ADAMSON

)元素。清单 5 还显示了该查询的结果。表 5 显示了插入 XML 表格元素后转换的结果。

  清单 5. XMLAGG 函数可用于聚合 XML 值,这里是三个 XML 元素节点

  connect to sample

  ...

  select xmlserialize(

  content xmlelement(

  name "tr", xmlattributes(workdept as "id"),

  xmlagg(

  xmlelement(name "td", lastname) order by lastname

  )

  )

  as clob(72)

  ) as "result"

  from employee

  group by workdept having count(*) = 3;

  

HAAS

LUCCHESSI

O'CONNELL

KWAN

NICHOLLS

QUINTANA

)和表行(

ADAMSON

BROWN

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章