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

C# 操作 XML 資料庫類型:Oracle XMLType 實戰(六)——Schema 就地演變 with DBMS_XMLSCHEMA.inPlaceEvolve

     編輯:關於C語言

業務變更:Phone 新增 Make 欄位、PhoneType 新增「小靈通」

完整 PL/SQL 演變腳本


declare
  -- 舊 Schema
  oldSchemaDoc nvarchar2(2000) := '<xs:schema ...> ... </xs:schema>';
  -- 新 Schema  
  newSchemaDoc nvarchar2(2000) := '<xs:schema ...> ... <xs:element name="Make" type="xs:string"/> ... <xs:enumeration value="小靈通"/> ... </xs:schema>';
  diffXMLDoc clob;
  v_schema_url nvarchar2(255) := 'https://www.OracleDemo.com/Phones.xsd';
begin
  -- 1. 產生差異文件
  select xmldiff(xmltype(oldSchemaDoc), xmltype(newSchemaDoc)).getClobVal()
    into diffXMLDoc from dual;
  
  -- 2. 就地演變 (11g 新功能,效能優於 copyEvolve)
  DBMS_XMLSCHEMA.inPlaceEvolve(v_schema_url, xmltype(diffXMLDoc));
end;

核心流程

  1. 準備舊/新 XSD 字串
  2. xmldiff 比較產生差異 XML (CLOB)
  3. DBMS_XMLSCHEMA.inPlaceEvolve 套用差異,就地修改 Schema

優勢分析

  • inPlaceEvolve:11g 引入,不需複製資料,效能大幅優於舊 copyEvolve
  • 僅兩個核心函數:xmldiff + inPlaceEvolve
  • 程式碼極簡潔:主要篇幅在 XSD 字串定義

對應 C# 端操作

C# 修改類別定義 → 重新產生 XSD → 執行上述 PL/SQL → 完成資料庫 Schema 同步。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved