1

我正在尝试创建一个物化视图,该视图将在表中包含 XML 数据的表格视图。我也希望使用自动刷新选项来确保 MV 始终是最新的。

一些背景:Oracle 10.2

表定义:

CREATE TABLE AGREEMENTEXTENSIONDATA (
    AGREEMENTEXTENSIONDATAID  NUMBER(18)          NOT NULL,
    EXTENSIONDATA             NCLOB,  
    AGREEMENTID               NUMBER(18)          NOT NULL)

扩展数据示例:

<Extensions>
  <ExtensionData id="2" name="IncludePortfolio" type="4">true</ExtensionData>
</Extensions>

我在表上创建了一个日志:

CREATE MATERIALIZED VIEW LOG ON AGREEMENTEXTENSIONDATA
NOCACHE
LOGGING
NOPARALLEL
WITH PRIMARY KEY
INCLUDING NEW VALUES;

然后我尝试创建以下 MV:

CREATE MATERIALIZED VIEW MV_ExtAgreements
REFRESH FAST ON COMMIT
ENABLE QUERY REWRITE
as
select AGREEMENTEXTENSIONDATAID,
       agreementid,
       extractvalue(xmltype(EXTENSIONDATA), '/Extensions/ExtensionData[@id=''1'']')
from agreementextensiondata
/

但收到以下消息:

ORA-30373: 在此上下文中不支持对象数据类型

我看到另一篇文章建议使用函数从 XML 中提取值,但这也不起作用:

create or replace function extractVARCHAR2Extension(p_xml in clob, in_number in VARCHAR2) 
return varchar2 deterministic   
is 
begin  
   return xmltype(p_xml).extract('/Extensions/ExtensionData[@id=''' || in_number ||  ''']/text()').getstringval();
end;
/

但以下语句失败:

select extractVARCHAR2Extension(extensiondata,'2')
from agreementextensiondata 
    where agreementid = 136
ORA-00600: 内部错误代码, 参数: [kghsccread1], [128], [0], [], [], [], [], []
ORA-06512:在“SYS.XMLTYPE”,第 254 行
ORA-06512: 在“ALGOV5.EXTRACTVARCHAR2EXTENSION”,第 5 行

??

欢迎任何指导,我可能在这里使用了错误的工具集。

谢谢

4

1 回答 1

0

更改p_xml in clobp_xml in Nclob

于 2011-07-22T05:01:11.747 回答