2016-07-06 8 views
-1

oracleに大きなXMLスキーマを登録する方法はありますか。oracleに大きなxmlスキーマを登録中にエラーが発生しました

dbms_xmlschema.registerSchemaを使用してXMLスキーマ(< 32KB)を登録しようとしたところ、問題なく成功しました。

しかし、XMLスキーマのサイズ(> 32キロバイト)に大きい場合、エラーメッセージがあります:

Error report: 
ORA-06550: line 4, column 49: 
PLS-00172: string literal too long 
06550. 00000 - "line %s, column %s:\n%s" 
*Cause: Usually a PL/SQL compilation error. 
*Action: 

答えて

1

DBMS_XMLSCHEMA.REGISTERSCHEMA()は、いくつかの異なるタイプを取るためにオーバーロードされます。

DBMS_XMLSCHEMA.REGISTERSCHEMA(
    schemaurl  IN VARCHAR2, 
    schemadoc  IN VARCHAR2, 
    local   IN BOOLEAN := TRUE, 
    gentypes   IN BOOLEAN := TRUE, 
    genbean   IN BOOLEAN := FALSE, 
    gentables  IN BOOLEAN := TRUE, 
    force   IN BOOLEAN := FALSE, 
    owner   IN VARCHAR2 := NULL, 
    enablehierarchy IN PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS, 
    options   IN PLS_INTEGER := 0); 

schemadocを取り引数はVARCHAR2で、PL/SQLではlimited to 32,767 bytesです。

DBMS_XMLSCHEMA.REGISTERSCHEMA(
    schemaurl  IN VARCHAR2, 
    schemadoc  IN CLOB, 
    local   IN BOOLEAN := TRUE, 
    gentypes   IN BOOLEAN := TRUE, 
    genbean   IN BOOLEAN := FALSE, 
    force   IN BOOLEAN := FALSE, 
    owner   IN VARCHAR2 := NULL, 
    options   IN PLS_INTEGER := 0); 

limited to 128TBあるCLOBとしてschemadoc引数を取ります。

プロシージャを呼び出すために使用するデータ型は指定しませんが、VARCHAR2を渡しているように見えますが、CLOB(または大きな制限を持つ他の型の1つ)を渡すことをお勧めします。

+0

が応答をありがとうREGISTERURIメソッドを使用することがはるかに優れています。 私は以下のように実行しようとしました: DECLARE schemaURL VARCHAR2(50); schemaDoc CLOB; DBMS_XMLSCHEMA.REGISTERSCHEMA(SCHEMAURL =>「xsd2.xsd」、 schemaDocの=>「大きなXMLスキーマ」 ENDをBEGIN; – Kumar

+0

しかし、私はまだ同じエラーメッセージを持っている – Kumar

+0

あなたはまだ文字列リテラルではないと、それを呼び出しています。 CLOBを試してみてください: 'DECLARE schemaURL VARCHAR2(50); schemaDoc CLOB:= '大きなXMLスキーマ'; BEGIN dbms_xmlschema.registerSchema(schemaURL => 'xsd2.xsd'、schemaDoc => schemaDoc); END;' – MT0

0

BFILEを使用してファイルシステムからXMLスキーマを読み、またはXDBリポジトリにそれをプリロードし、その後

関連する問題