2011-07-21 12 views
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

答えて

0

変更p_xml in clob

関連する問題