首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle XMLType 完整操作指南:建表、插入、查詢、更新與大文件載入

     編輯:Oracle 資料庫基礎

XMLType 概述

Oracle 9i+ 引入 XMLType 原生型別,支援 XML 文件儲存、查詢、索引與轉換。提供豐富方法:extract()、existsNode()、transform()、getStringVal() 等。

建立 XMLType 欄位表

CREATE TABLE abc (
  id NUMBER PRIMARY KEY,
  xmldoc SYS.XMLTYPE
);

宣告型別使用 SYS.XMLTYPE。

插入 XML 資料

INSERT INTO abc (id, xmldoc) VALUES (
  abc_seq.NEXTVAL,
  SYS.XMLTYPE.CREATEXML('abc')
);
  • 使用 SYS.XMLTYPE.CREATEXML() 將字串轉換為 XMLType
  • 自動驗證 XML 格式正確性

查詢與擷取 XML 內容

更新 XML 內容

UPDATE abc SET xmldoc = 
  UPDATEXML(xmldoc, '//name/a[@id=1]/@value', 'some new value')
WHERE ...;
  • UPDATEXML 依 XPath 定位並替換值
  • 注意:目標節點必須存在,否則更新無效果(不會自動建立節點)

載入超過 4KB 的大型 XML 文件

SQL 字面值 4000 位元組限制,採用暫存表中轉:

  1. 建立暫存表含 CLOB 欄位:CREATE TABLE tmp_xml (id NUMBER, content CLOB);
  2. 寫入 XML 至 CLOB 欄位(程式端參數綁定或 DBMS_LOB)
  3. 轉換插入目標表:
    INSERT INTO abc (id, xmldoc) VALUES (
      abc_seq.NEXTVAL,
      SYS.XMLTYPE.CREATEXML((SELECT content FROM tmp_xml WHERE id = ...))
    );

進階功能預覽

  • XMLIndex:11g+ 專用 XML 索引,大幅加速 XPath 查詢
  • XMLSchema 驗證:註冊 XSD,強制 XML 符合結構定義
  • XQuery / SQL/XML:標準化查詢語法,跨關聯與 XML 資料
  • 二元性支援:PL/SQL 嵌入 XML、XML 嵌入 PL/SQL 互相轉換
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
需求XPath 表達式SQL 範例
屬性值//name/a[@id=1]/@valueSELECT xmldoc.extract('//name/a[@id=1]/@value').getStringVal() FROM abc
節點文字//name/a/text()SELECT xmldoc.extract('//name/a/text()').getStringVal() FROM abc
節點屬性/root/name/@idSELECT data_t.extract('/root/name/@id').getStringVal() FROM sehr_house_data