2016-07-06 26 views
-1

是否有任何解決方案在Oracle中註冊大型XML模式?錯誤,同時在oracle中註冊大型XML模式

當我嘗試使用dbms_xmlschema.registerSchema註冊XML模式(這是< 32KB)它是成功的。

但是當XML模式是在大小(> 32KB)大時,存在的錯誤消息:

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); 

注意到schemadoc參數作爲CLOBlimited to 128TB

您沒有指定用於調用該過程的數據類型,但看起來您正在傳遞一個VARCHAR2,並且您可能想要傳遞一個CLOB(或具有較大限制的其他類型之一)。

+0

謝謝你的答覆。 我試圖執行如下: DECLARE schemaURL VARCHAR2(50); schemaDoc CLOB; BEGIN dbms_xmlschema.registerSchema(schemaURL =>「xsd2.xsd」, schemaDoc =>「大型XML架構」 END; – Kumar

+0

但我仍然有同樣的錯誤消息 – Kumar

+0

你還在用字符串字面稱它不是一個CLOB。試試:'DECLARE schemaURL VARCHAR2(50); schemaDoc CLOB:='large XML schema'; BEGIN dbms_xmlschema.registerSchema(schemaURL =>'xsd2.xsd',schemaDoc => schemaDoc); END;' – MT0

0

這是更好的閱讀從文件系統使用BFILE XML模式,或將其預裝到XDB庫,然後使用REGISTERURI方法