0

0

Oracle中XMLTYPE怎么用 Oracle XML数据类型操作教程

幻夢星雲

幻夢星雲

发布时间:2026-01-04 10:22:33

|

703人浏览过

|

来源于php中文网

原创

必须掌握XMLTYPE数据类型的使用方法:一、创建含XMLTYPE字段的表;二、插入数据;三、提取节点值;四、更新内容;五、添加或删除节点;六、查询原始内容。

oracle中xmltype怎么用 oracle xml数据类型操作教程

如果您需要在Oracle数据库中存储、查询或修改结构化XML文档,则必须掌握XMLTYPE数据类型的使用方法。以下是针对该数据类型的核心操作步骤:

一、创建含XMLTYPE字段的表

XMLTYPE列是存储XML文档的基础载体,支持对象关系型或CLOB存储方式,适用于不同规模和访问模式的数据需求。

1、使用默认CLOB存储创建表:
CREATE TABLE t_config (id NUMBER PRIMARY KEY, config_data XMLTYPE);

2、显式指定对象关系型存储以启用XPath索引优化:
CREATE TABLE t_config_or (id NUMBER PRIMARY KEY, config_data XMLTYPE) XMLTYPE COLUMN config_data STORE AS OBJECT RELATIONAL;

3、指定CLOB存储(适合大体积XML):
CREATE TABLE t_config_clob (id NUMBER PRIMARY KEY, config_data XMLTYPE) XMLTYPE COLUMN config_data STORE AS CLOB;

二、向XMLTYPE字段插入数据

插入操作需将字符串或外部文件内容转换为XMLType实例,确保语法合法且编码一致,否则将触发ORA-31011异常。

1、使用XMLType()构造函数插入内联XML:
INSERT INTO t_config (id, config_data) VALUES (1, XMLType('test'));

2、使用sys.XMLType.createXML()处理含特殊字符或中文的XML:
INSERT INTO t_config (id, config_data) VALUES (2, sys.XMLType.createXML('张三'));

3、从BFILE加载外部XML文件(需预先创建DIRECTORY并授予权限):
INSERT INTO t_config (id, config_data) VALUES (3, XMLType(bfilename('XMLDIR', 'config.xml'), nls_charset_id('AL32UTF8')));

三、提取XMLTYPE中的节点值

Oracle提供多种XPath解析函数,extract()返回XMLType结果集,而extractValue()仅返回标量字符串,但后者在12c+版本中已弃用,推荐统一使用XMLTable。

1、使用extract()获取节点子树(返回XMLType):
SELECT extract(config_data, '/root/val/text()') FROM t_config WHERE id = 1;

2、使用XMLTable实现关系化解析(支持多值、JOIN与WHERE):
SELECT x.val FROM t_config, XMLTable('/root' PASSING config_data COLUMNS val VARCHAR2(50) PATH 'val') x WHERE id = 1;

3、提取带命名空间的节点时必须声明命名空间前缀:
SELECT extract(config_data, '/ns:root/ns:val/text()', 'xmlns:ns="http://example.com"') FROM t_config;

京点点
京点点

京东AIGC内容生成平台

下载

四、更新XMLTYPE字段内容

XMLTYPE支持原地修改,无需全量重写,通过modify()方法或UPDATEXML函数可精准定位并变更指定路径的节点或属性。

1、使用modify()方法更新文本节点(推荐,支持多操作):
UPDATE t_config SET config_data.modify('replace value of node /root/val with "new value"') WHERE id = 1;

2、使用UPDATEXML函数替换整个节点内容:
UPDATE t_config SET config_data = UPDATEXML(config_data, '/root/val/text()', 'updated') WHERE id = 1;

3、修改属性值(XPath中使用@符号):
UPDATE t_config SET config_data.modify('replace value of node /person/@id with "1001"') WHERE id = 2;

五、向XMLTYPE中添加或删除节点

动态扩展XML结构需借助appendchildxml()或deletexml()函数,操作前应确认目标路径存在,否则语句执行失败且不报错。

1、在指定路径下追加子节点:
UPDATE t_config SET config_data = APPENDCHILDXML(config_data, '/root', XMLType('added')) WHERE id = 1;

2、删除匹配XPath的所有节点:
UPDATE t_config SET config_data = DELETEXML(config_data, '/root/val') WHERE id = 1;

3、删除特定属性(需用@语法):
UPDATE t_config SET config_data = DELETEXML(config_data, '/person/@id') WHERE id = 2;

六、查询XMLTYPE字段原始内容

当需要查看完整XML文本而非解析结果时,必须调用getClobVal()方法,否则SQL*Plus或某些客户端可能仅显示“XMLTYPE”字样。

1、获取CLOB格式的完整XML字符串:
SELECT config_data.getClobVal() FROM t_config WHERE id = 1;

2、在PL/SQL块中安全输出(避免隐式截断):
BEGIN DBMS_OUTPUT.PUT_LINE(t_config_row.config_data.getClobVal()); END;

3、若字段未显式别名,在SELECT *中无法直接显示,必须显式调用getClobVal()才能获得可读内容。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

676

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

320

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

346

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

1090

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

356

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

674

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

570

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

410

2024.04.29

从零到实战:Python 编程系统入门专题
从零到实战:Python 编程系统入门专题

本专题面向零编程基础及初学者,系统讲解 Python 编程语言的核心知识与实战技巧。内容涵盖 Python 基础语法、数据结构、函数与模块、常用标准库、简单算法思维,以及真实应用场景下的小项目实战。通过循序渐进的学习路径,帮助读者快速建立编程思维,掌握 Python 在数据处理、自动化脚本及日常开发中的实际应用能力,为后续深入学习 Web 开发、数据分析或人工智能打下坚实基础。

2

2026.01.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
SQL 教程
SQL 教程

共61课时 | 3.3万人学习

Java 教程
Java 教程

共578课时 | 42.1万人学习

oracle知识库
oracle知识库

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号