下面的存储过程给出了错误,我找不到任何解决方案来解决这个问题,使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:遇到以下其中一项时遇到符号“,”:: =。 (%;
答案 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;