可用版本: Dev (3.21) | 最新 (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14

ROOT指令

适用于 ❌ 开源版   ✅ Express 版   ✅ 专业版   ✅ 企业版

ROOT 指令允许将 XML 文档片段包装在根元素中。

考虑以下查询

SELECT id, title
FROM book
ORDER BY id
FOR XML RAW, ROOT ('result')
 
create.select(BOOK.ID, BOOK.TITLE)
      .from(BOOK)
      .orderBy(BOOK.ID)
      .forXML().raw().root("result")
      .fetch();

此查询生成如下文档

<result>
  <row ID="1" TITLE="1984"/>
  <row ID="2" TITLE="Animal Farm"/>
  <row ID="3" TITLE="O Alquimista"/>
  <row ID="4" TITLE="Brida"/>
</result>

方言支持

此示例使用 jOOQ

select(BOOK.ID).from(BOOK).orderBy(BOOK.ID).forXML().raw().root("result")

翻译成以下特定方言的表达式

DB2、Oracle、Postgres

SELECT xmlelement(
  NAME result,
  xmlagg(xmlelement(
    NAME row,
    xmlattributes(t.ID AS ID)
  ))
)
FROM (
  SELECT BOOK.ID
  FROM BOOK
  ORDER BY BOOK.ID
) t

SQLServer

SELECT (
  SELECT BOOK.ID
  FROM BOOK
  ORDER BY BOOK.ID
  FOR XML RAW, ROOT ('result')
)

Teradata

SELECT xmlelement(
  NAME result,
  xmlagg(xmlelement(
    NAME row,
    xmlattributes(t.ID AS ID)
  ))
)
FROM (
  SELECT *
  FROM (
    SELECT TOP 999999999999999999 BOOK.ID
    FROM BOOK
    ORDER BY BOOK.ID
  ) x
) t

ASE、Access、Aurora MySQL、Aurora Postgres、BigQuery、ClickHouse、CockroachDB、Databricks、Derby、DuckDB、Exasol、Firebird、H2、HSQLDB、Hana、Informix、MariaDB、MemSQL、MySQL、Redshift、SQLDataWarehouse、SQLite、Snowflake、Sybase、Trino、Vertica、YugabyteDB

/* UNSUPPORTED */
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL

引用此页

反馈

您对此页面有任何反馈吗? 我们很乐意听取您的意见!

The jOOQ Logo