如何从常规 SQL 查询中输出 XML?

Posted

技术标签:

【中文标题】如何从常规 SQL 查询中输出 XML?【英文标题】:How to output XML from a regular SQL query? 【发布时间】:2014-04-18 18:07:20 【问题描述】:

Oracle 版本 11g。我在 PL/SQL 过程中有一个有效的 SQL 查询。获取此查询和输出 XML 的最简单方法是什么,或者指定元素名称,或者从查询列中获取它们?我对是否使用 DBMS_XMLGEN、XMLQuery 或 SQLX 感到困惑。在 Oracle 中执行此操作的规范方法是什么?

谢谢

【问题讨论】:

dbms_xmlgen 应该可以工作。你试过了吗? 查看此链接***.com/questions/14466485/… 【参考方案1】:

检查生成 XML http://docs.oracle.com/cd/B19306_01/appdev.102/b14259/xdb13gen.htm#i1029583 的 SQL 函数。例如:

SELECT
   XMLRoot(
      XMLElement(
        "employees", 
        XMLAgg(
           XMLElement("employee",
              XMLConcat(
                 XMLElement(
                    "name",
                    e.name
                 ),
                 XMLElement(
                    "surname",
                    e.surname
                 )
              )
           )
        )
     ), VERSION '1.0', STANDALONE YES
  ).getClobVal() INTO retval -- useful if you want to export it outside oracle
  FROM employees e

应该返回例如:

<?xml version="1.0" standalone="yes"?>
<employees>
    <employee>
        <name>Jan</name>
        <surname>Kowalski</surname>
    </employee>
    <employee>
        <name>Tomasz</name>
        <surname>Nowak</surname>
    </employee>
</employees>

【讨论】:

谢谢!迟到总比不到好。

以上是关于如何从常规 SQL 查询中输出 XML?的主要内容,如果未能解决你的问题,请参考以下文章

如何从以 BLOB 类型存储在列中的 XML 中提取数据(通过 SQL 查询)

如何在 SQL 中查询特定文本的 xml 列

如何将 PL/SQL 的输出(XML)存储在 oracle 表中

SQL Server 如何使用 WHILE 查询从多个结果中输出一个表结果

如何从 Pentaho-Kettle 中基于动态选择的 sql 查询中获取结果集?

如何从 Java 中的 Oracle SQL 选择中获取原始脚本输出而不是查询结果