Oracle DBMS注册表架构 - 有谁知道如何使用BLOB shcemadoc进行dbms注册表调用?

时间:2015-03-10 19:12:57

标签: sql oracle stored-procedures

下面的存储过程给出了错误,我找不到任何解决方案来解决这个问题,使BLOB字段可以接受寄存器模式。请告诉我这句话有什么不妥。

CREATE OR REPLACE
PROCEDURE xsdUpload2(
    p_schemaURL IN VARCHAR2 ,
    p_schemaDoc IN BLOB )

IS
  schemaURL varchar2;
  schemaDoc BLOB;

BEGIN
    schemaURL := p_schemaURL; 
    schemaDoc := p_schemaDoc;
    dbms_xmlschema.registerSchema(schemaURL, schemaDoc , nls_charset_id('AL32UTF8')) , local => true , genTypes => true, genbean => false, genTables => True );
  

错误: 错误(19,86):PLS-00103:遇到以下其中一项时遇到符号“,”:: =。 (%;

2 个答案:

答案 0 :(得分:2)

这是[{1}}此处 -

末尾的额外问题
nls_charset_id

这会使dbms_xmlschema.registerSchema(schemaURL, schemaDoc , nls_charset_id('AL32UTF8')) 函数调用结束,从而导致其他参数出错。

使用类似Toad或SQL Developer的IDE,可以在编写时捕获这些错误。

答案 1 :(得分:0)

这个存储过程适合我。在宣布之前我错过了BEGIN和END之前。这引起了所有问题。

create or replace 
PROCEDURE xsdUpload2(
    p_schemaURL IN VARCHAR2,
    p_schemaDoc IN BLOB,
    v_response OUT VARCHAR2)
IS
BEGIN
  DECLARE
    schemaXML BLOB := p_schemaDoc;
  BEGIN
    dbms_xmlschema.registerschema(schemaurl => p_schemaURL, schemadoc => schemaXML, local => true , genTypes => true, genbean => false, genTables => true);
    v_response :='SUCCESS';
    COMMIT;
  EXCEPTION
  WHEN OTHERS THEN
    v_response := 'ERROR: Either this schema already exists (or) error occured while executing registerschema . Verify input parameter passed to stored procedure';
  END;
END;