我试图通过互联网寻找解决方案。我看过的一些东西: https ://forums.oracle.com/thread/2182669 http://www.club-oracle.com/forums/how-to-insert-data-from-xml-to-table -t2845/
在所有这些情况下,该解决方案都考虑了只有节点和子节点但没有属性的 XML 结构。事实上,其中一种解决方案建议将 XML 转换为只有节点没有属性的规范形式。
这是我正在使用的 xml 结构的示例:
示例 XML
<rep type="P" title="P List">
<as>
<a id="3" />
<a id="4" />
</as>
</rep>
我正在使用oracle 客户端 11.2 和 SQL 开发人员
我的问题是:如何在节点旁边将XML 数据写入具有属性的表中,也作为列值?
以下内容适用于我的临时表,最终我会将其规范化为多个表..
-- Temp table
CREATE TABLE TEMP_Temp1
(rtype varchar(10),
title varchar(200),
aid varchar(10),
description varchar(100),
flag varchar(50),
po char(1));
x 是上面 xml 片段的 varchar 变量。
INSERT INTO TEMP_Temp1
SELECT *
FROM xmltable( '/rep' passing xmltype (x) columns rtype VARCHAR(10) path '@type' , title VARCHAR(200) path '@title') AS xmlr ,
xmltable( '/rep/a' passing xmltype (x) columns aid VARCHAR(10) path '@id' , description VARCHAR(100) path '@description' , flag VARCHAR(50) path '@flag' , po CHAR(1) path '@po') AS xmla ;
END;