1
テーブルに含まれるXMLデータの表形式のビューを表示する、マテリアライズド・ビューを作成しようとしています。また、自動リフレッシュオプションを使用して、MVが常に最新であることを確認したいと考えています。一般化されたビューでExtractValueとXMLTypeを使用する
いくつかの背景: オラクルDEF 10.2
テーブル:extensiondataの
CREATE TABLE AGREEMENTEXTENSIONDATA (
AGREEMENTEXTENSIONDATAID NUMBER(18) NOT NULL,
EXTENSIONDATA NCLOB,
AGREEMENTID NUMBER(18) NOT NULL)
例:
CREATE MATERIALIZED VIEW LOG ON AGREEMENTEXTENSIONDATA
NOCACHE
LOGGING
NOPARALLEL
WITH PRIMARY KEY
INCLUDING NEW VALUES;
:私はテーブルの上にログを作成する必要があり
<Extensions>
<ExtensionData id="2" name="IncludePortfolio" type="4">true</ExtensionData>
</Extensions>
私は次の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: object data types are not supported in this context
を私は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: internal error code, arguments: [kghsccread1], [128], [0], [], [], [], [], [] ORA-06512: at "SYS.XMLTYPE", line 254 ORA-06512: at "ALGOV5.EXTRACTVARCHAR2EXTENSION", line 5
??
ご迷惑をおかけして申し訳ございませんが、ここでは間違ったツールを使用しています。
おかげp_xml in Nclob
へ