我正在尝试创建一个物化视图,该视图将在表中包含 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 行
??
欢迎任何指导,我可能在这里使用了错误的工具集。
谢谢