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つ)を渡すことをお勧めします。
出典
2016-07-06 19:36:35
MT0
が応答をありがとうREGISTERURIメソッドを使用することがはるかに優れています。 私は以下のように実行しようとしました: DECLARE schemaURL VARCHAR2(50); schemaDoc CLOB; DBMS_XMLSCHEMA.REGISTERSCHEMA(SCHEMAURL =>「xsd2.xsd」、 schemaDocの=>「大きなXMLスキーマ」 ENDをBEGIN; – Kumar
しかし、私はまだ同じエラーメッセージを持っている – Kumar
あなたはまだ文字列リテラルではないと、それを呼び出しています。 CLOBを試してみてください: 'DECLARE schemaURL VARCHAR2(50); schemaDoc CLOB:= '大きなXMLスキーマ'; BEGIN dbms_xmlschema.registerSchema(schemaURL => 'xsd2.xsd'、schemaDoc => schemaDoc); END;' – MT0