我在我的一些 oracle 数据库表中使用 XMLType 列。早期(在 11.2.0.2 中)考虑的默认存储类型是 CLOB。因此,如果您对 XMLType 列发出查询,我可以将列的内容视为 XML 字符串。但是当我删除并重新创建所有表并插入一些数据时,我无法获得 XMLType 列的内容。它在 cloumn 值中简单地显示 XMLType。我怀疑存储类型是否在 BINARY XML 中被更改?所以我发出以下更改语句:
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 的内容呢?
编辑:
从 XMYTYPETESTx 中选择 x.ID、x.Vid、x.details.getCLOBVal(),其中 x.ID=100000;
上面的查询最终对我有用。