【问题标题】:How to add pagination to XMLAGG query result in Oracle?如何在 Oracle 中为 XMLAGG 查询结果添加分页?
【发布时间】:2018-10-13 18:30:33
【问题描述】:

我有一个返回 XML 数据的 SQL 查询,类似于以下示例:

SELECT XMLELEMENT("Columns", 
  XMLAGG(XMLELEMENT("Column", CNAME) ORDER BY CNAME)) AS DATA
FROM Col

现在我想为该查询添加分页支持。由于 XMLAGG 函数将所有元素合并为一个 XML 结果,因此标准的“WHERE ROWNUM

如何向包含 XMLAGG 的 Oracle SQL 查询添加分页?

【问题讨论】:

    标签: sql xml oracle oracle12c


    【解决方案1】:

    在子查询中分页,然后在外部查询中进行聚合:

    SELECT XMLELEMENT("Columns", 
           XMLAGG(XMLELEMENT("Column", CNAME) ORDER BY CNAME)) AS DATA
    FROM   (
      SELECT CNAME
      FROM   Col
      ORDER BY CNAME
      OFFSET 0 ROWS
      FETCH NEXT 100 ROWS ONLY
    );
    

    【讨论】:

    • 在 XMLAGG 中重复 ORDER BY 是可选的还是强制的?
    • @blerontin 您可以自己尝试一下,看看 Oracle 是否会引发异常 - 但是,在我所做的简短测试中,没有它也可以正常工作。
    • 你可以omit它,但如果你需要保证元素顺序,这是强制性的。
    猜你喜欢
    • 2022-08-16
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 2017-10-30
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多