将包含有超过 4000 个字符的大型 XML 文档加载到数据库中的 XMLType 表或 XMLType 列中
引言
Oracle XML DB 是一组专门为 XML 开发的内置高性能存储和检索技术。Oracle XML DB 将 World Wide Web Consortium (W3C) XML 数据模型完全吸收到 Oracle9 face="Times New Roman, Times, serif">i 数据库中,并为导航和查询 XML 提供了新的标准访问方法。可以同时获得关系数据库技术和 XML 技术的所有优势。Oracle XML DB 可用于存储、查询、更新、转换或处理 XML,并可使用 SQL 查询访问相同的 XML 数据。
使用 PL/SQL 过程 'loadPurchaseOrder' 来演示大型 XML 文档的加载过程。在此过程中,声明了一个 CLOB 对象 'poXML',用于包含需要存储到数据库中的 XML 内容。XML 将被存储到表 'poTable' 的 XMLType 列 'purchaseOrder' 中。CLOB 对象所包含的 XML 是包含超过 4000 个字符的大型 XML 文档。
CREATE or REPLACE PROCEDURE loadPurchaseOrder IS -- Declare a CLOB variable poXML CLOB; BEGIN -- Store the Purchase Order XML in the CLOB variable poXML := '<purchaseorder><?xml version="1.0" encoding="UTF-8" standalone="yes"?> <PurchaseOrder> <PONum>1001</PONum>
<Company>Oracle Corp</Company> . . . </PurchaseOrder>'; -- Insert the Purchase Order XML into an XMLType column INSERT INTO potable (purchaseOrder) VALUES (XMLTYPE(poXML));
--Handle the exceptions EXCEPTION WHEN OTHERS THEN raise_application_error(-20101, 'Exception occurred in loadPurchaseOrder procedure :'||SQLERRM); END loadPurchaseOrder;</purchaseorder>
如果使用 JDBC 中的字符串对象将大型 XML 文档(通常多于 4000 个字符)插入到 XMLType 列中,将会出现运行时错误 "java.sql.SQLException:Data size bigger than max size for this type"。通过使用包含大型 XML 文档的 CLOB 对象,可以解决此问题。