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
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!