我在我的一些oracle数据库表中使用XMLType列。之前(在11.2.0.2中),考虑的默认存储类型是CLOB。因此,如果您为XMLType列发出查询,我可以将列的内容视为XML字符串。但是当我删除并重新创建所有表并插入一些数据时,我无法获得XMLType列的内容。它简单地在cloumn值中显示XMLType。我怀疑存储类型是否以BINARY XML格式化?所以我发出以下alter语句:
ALTER TABLE "MYSCHEMA"."SYSTEMPROP"
MODIFY ("XMLCOL")
XMLTYPE COLUMN "XMLCOL" STORE AS CLOB;
请注意,表格中已有一些数据。在我删除并插入行之后的事件,内容显示为XMLType。我正在使用SQL开发人员UI工具。任何人都可以提出解决此问题的方法吗?
编辑:
好的,现在我们决定将XMLType列内容存储为SECURE FILE BINARY XML。所以我们有这样的表:
CREATE TABLE XMYTYPETEST
(
ID NUMBER(8) NOT NULL,
VID NUMBER(4) NOT NULL,
UserName VARCHAR2(50),
DateModified TIMESTAMP(6),
Details XMLType
)XMLTYPE COLUMN Details STORE AS SECUREFILE BINARY XML;
Insert into XMYTYPETEST values(10001,1,'XXXX',sysdate,'<test><node1>BLOBTest</node1></test>');
Select * from XMYTYPETEST;
XMLType列在sql developer中显示为“SYS.XMLType”。那么如何获取二进制XML的内容呢?
编辑:
SELECT x.ID,x.Vid,x.details.getCLOBVal()FROM XMYTYPETESTx,其中x.ID = 100000;
上述查询最终为我解决了。
答案 0 :(得分:1)
oracle数据库中xmldata的底层存储是CLOB或Binary。
默认为11g的二进制存储。
但无论存储如何,您对xmltype列的查询都会产生一致的结果。
&GT;&GT;&GT;&GT;那么如何获取二进制XML的内容呢?
使用查询获取xmltype列内容的方法不会改变。
这些是提取xml中数据的一些方法。
希望这有帮助。