Oracle XML 函数参考指南

Oracle 数据库原生提供了强大的 XML 数据库功能(Oracle XML DB),支持在数据库中存储、查询、生成和转换 XML 数据。借助丰富的内置 XML 函数,开发者可以在 SQL 查询中直接解析 XMLType 文档、使用 XPath/XQuery 提取节点、将关系型表数据生成符合标准的 XML 格式,或将复杂的 XML 数据投影为标准的关系表。

本页汇总了常用的 Oracle XML 核心函数与分类参考指南。


核心 XML 函数分类速查

1. XML 解析与关系型投影

将 XML 数据解析为对象或将其转换为关系型行列数据:

  • XMLPARSE:将文本字符串解析为 XMLType 实例,支持 DOCUMENT(完整根节点文档)或 CONTENT(文档片段)语法。
  • XMLTABLE:通过 XPath 或 XQuery 表达式将 XML 文档内容投影成二维关系表,便于与普通 SQL 表进行 JOIN、过滤和分组。
  • XMLCAST:将 XML 标量值或 XPath 评估结果安全转换为标量 SQL 数据类型(如 VARCHAR2、NUMBER、DATE)。

2. XML 节点探测与路径函数

用于判断 XML 结构中的节点存在性与层级信息:

  • EXISTSNODE:根据给定的 XPath 路径判断节点是否存在,若存在返回 1,不存在返回 0。
  • DEPTH:在使用 XML 检索操作时返回指定节点的层级深度。

3. XML 构建与生成函数

用于将普通关系型数据直接构造成 XML 片段或文档:

  • XMLFOREST:将多个字段或表达式快速拼接生成一组平行的 XML 元素节点。
  • XMLPI:用于生成符合 XML 规范的处理指令(Processing Instruction)。

4. XML 序列化与输出

  • XMLSERIALIZE:将 XMLType 数据序列化为字符串、CLOB 或 BLOB,支持格式化缩进排版(INDENT)和不缩进输出。

典型应用场景示例

从 XML 中提取关系型表格(XMLTABLE)

SELECT x.user_id, x.user_name
FROM XMLTABLE(
    '/users/user'
    PASSING XMLPARSE(DOCUMENT '<users><user id="1"><name>张三</name></user></users>')
    COLUMNS
        user_id   NUMBER       PATH '@id',
        user_name VARCHAR2(50) PATH 'name'
) x;

常用工具推荐

在处理复杂的 Oracle XML 查询与格式化嵌套 SQL 时,推荐结合使用站内工具:

目录

  1. DEPTH

    详解 Oracle DEPTH() 函数的语法、相关参数与应用场景,掌握在 Oracle XML 资源与层级路径检索中获取当前节点相对深度的用法。
  2. EXISTSNODE

    详解 Oracle EXISTSNODE() 函数的语法、XPath 判断规则与应用示例,快速判断 XML 文档中是否存在指定的节点或属性。
  3. XMLCAST

    详解 Oracle XMLCAST() 函数的语法、参数与类型转换示例,掌握如何将 XML 标量值或 XPath 评估结果转换为标量 SQL 数据类型。
  4. XMLFOREST

    详解 Oracle XMLFOREST() 函数的语法、别名指定与 NULL 元素忽略特性,掌握如何从关系型数据快速生成多字段 XML 元素森林。
  5. XMLPARSE

    详解 Oracle XMLPARSE() 函数的语法、DOCUMENT 与 CONTENT 模式区别,掌握如何将字符串与文本解析为标准的 XMLType 实例。
  6. XMLPI

    详解 Oracle XMLPI() 函数的语法、处理指令名称与内容规范,掌握如何在 Oracle 中生成标准的 XML Processing Instruction。
  7. XMLSERIALIZE

    详解 Oracle XMLSERIALIZE() 函数的语法、DOCUMENT 与 CONTENT 格式化输出、CLOB 转换与缩进排版(INDENT)用法。
  8. XMLTABLE

    详解 Oracle XMLTABLE() 函数的语法、参数与关系型映射示例,掌握如何使用 XPath/XQuery 将 XML 数据投影为关系表行与列。