更改Oracle 11g中XMLType列的存储选项
我在一些oracle数据库表中使用XMLType列。之前(在11.2.0.2中)考虑的默认存储类型是CLOB。因此,如果您对XMLType列发出查询,我可以将该列的内容视为XML字符串。但是,当我删除并重新创建所有表并插入一些数据时,我无法获得XMLType列的内容。它可以简单地在cloumn值中显示XMLType。我怀疑存储类型是否在二进制XML中更改?因此,我发布以下alter声明:更改Oracle 11g中XMLType列的存储选项,oracle,xmltype,Oracle,Xmltype,我在一些oracle数据库表中使用XMLType列。之前(在11.2.0.2中)考虑的默认存储类型是CLOB。因此,如果您对XMLType列发出查询,我可以将该列的内容视为XML字符串。但是,当我删除并重新创建所有表并插入一些数据时,我无法获得XMLType列的内容。它可以简单地在cloumn值中显示XMLType。我怀疑存储类型是否在二进制XML中更改?因此,我发布以下alter声明: ALTER TABLE "MYSCHEMA"."SYSTEMPROP" MODIFY ("XMLCOL
ALTER TABLE "MYSCHEMA"."SYSTEMPROP"
MODIFY ("XMLCOL")
XMLTYPE COLUMN "XMLCOL" STORE AS CLOB;
请注意,表中已经有一些数据。事件之后,当我删除并插入一行时,内容显示为XMLType。我正在使用SQLDeveloperUI工具。有人能提出解决这个问题的方法吗
编辑:
好的,现在我们决定将XMLType列内容存储为安全文件二进制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;
创建表XMYTYPETEST
(
身份证号码(8)不为空,
视频编号(4)不为空,
用户名VARCHAR2(50),
日期修改时间戳(6),
详细信息XMLType
)XMLTYPE列详细信息存储为SECUREFILE二进制XML;
插入XMYTYPETEST值(10001,1,'XXXX',sysdate,'BLOBTest');
从XMYTYPETEST中选择*;
XMLType列在SQLDeveloper中显示为“SYS.XMLType”。那么,如何获取二进制XML的内容呢
编辑:
从XMYTYPETESTx中选择x.ID、x.Vid、x.details.getCLOBVal(),其中x.ID=100000
上面的查询最终对我有效。oracle数据库中xmldata的底层存储是CLOB或二进制 它默认为11g中的二进制存储 但是,不管存储是什么,对xmltype列的查询应该会产生一致的结果 >>>>那么,如何获取二进制XML的内容呢 使用查询获取xmltype列内容的方式不会改变
- 选择xmlquery(..)
- 选择xmlcast(xmlquery(…)
- 选择extract()、extractValue()、
希望这有帮助。oracle数据库中xmldata的底层存储是CLOB或二进制 它默认为11g中的二进制存储 但是,不管存储是什么,对xmltype列的查询应该会产生一致的结果 >>>>那么,如何获取二进制XML的内容呢 使用查询获取xmltype列内容的方式不会改变
- 选择xmlquery(..)
- 选择xmlcast(xmlquery(…)
- 选择extract()、extractValue()、
希望这有帮助。您的问题不清楚,是不是sql developer中的显示问题?您可以运行以下查询:
selectdump()并发布结果吗?顺便问一下,您是否尝试了getClobVal()
函数?对使用getClobVal()我可以读取BLOB字段内容。您的问题不清楚,是不是sql developer中的显示问题?您可以运行以下查询:selectdump()并发布结果吗?顺便问一下,您是否尝试了getClobVal()
函数?对使用getClobVal()我可以读取BLOB字段内容。我现在使用getClobVal()函数来检索存储为安全二进制文件的XML内容。但我现在面临着使用大型XML节点检索XML内容的问题。在select查询本身中是否有处理该问题的方法(我使用ORM来执行查询,因此不可能使用PL/SQL)。我现在使用getClobVal()函数来检索存储为安全二进制文件的XML内容。但我现在面临着使用大型XML节点检索XML内容的问题。在select查询本身中是否有处理这种情况的方法(我使用ORM来执行查询,因此不可能使用PL/SQL)。