2016-05-27 10 views
1

Ich erhalte den Fehler ORA-01830: Datum Format Bild endet vor Umwandlung der gesamten Eingabe-Zeichenfolge beim Ausführen von schemaValidate() für ein XMLType-Objekt.Oracle XSD - ORA-01830: Datumsformat Bild endet vor Umwandlung der gesamten Eingabezeichenfolge

Dies geschieht wegen des folgenden Datums: "2016-05-26T16: 37: 42Z" aber wenn ich das Z entferne und es als "2016-05-26T16: 37: 42" lasse, funktioniert es richtig.

Warum passiert das? Ich brauche den Prozess, um mit dem Zonenwert zu laufen, weil ich die eingehenden Dateien nicht ändern kann, es ist Teil der Anforderungen. Es läuft auch korrekt mit SSIS, aber ich brauche es in Oracle PL/SQL laufen.

Hier ist mein Code:

DECLARE 
    v_schema_url VARCHAR2 (200) := 'Test.xsd'; 
    v_blob   BLOB; 
    v_clob   CLOB; 
    v_xml   XMLTYPE; 
    xml_file BFILE; 
    xmlClob CLOB; 

    src_offset number := 1 ; 
    dest_offset number := 1 ; 
    lang_ctx number := DBMS_LOB.DEFAULT_LANG_CTX; 
    warning integer; 
    res integer; 
BEGIN 
    dbms_xmlschema.deleteschema(v_schema_url); 
    DBMS_XMLSCHEMA.registerschema (schemaurl => v_schema_url, 
            schemadoc => bfilename ('DIR_XSD','Test.xsd'), 
            local  => TRUE); 
    xml_file := BFILENAME('DIR_XSD', 'test.xml'); 
    DBMS_LOB.CREATETEMPORARY(xmlClob, true); 
    DBMS_LOB.FILEOPEN(xml_file, DBMS_LOB.FILE_READONLY); 
    DBMS_LOB.LOADCLOBFROMFILE(xmlClob, xml_file, DBMS_LOB.LOBMAXSIZE, src_offset, 
          dest_offset, DBMS_LOB.DEFAULT_CSID, lang_ctx, warning); 

    v_xml := XMLType.createXML(xmldata=>xmlClob,schema=>v_schema_url); 

    DBMS_LOB.FILECLOSEALL(); 
    DBMS_LOB.FREETEMPORARY(xmlClob); 

    v_xml.schemaValidate(); 

    IF v_xml.isschemavalid (v_schema_url) = 1 THEN 
     DBMS_OUTPUT.put_line ('valid'); 
    ELSE 
     DBMS_OUTPUT.put_line ('not valid'); 
    END IF; 
END; 

Antwort

1

es behoben folgendes Datetime Definition durch Zugabe:

xdb:SQLType="TIMESTAMP WITH TIME ZONE" 

auch die folgenden nach oben Schema defition benötigt hinzuzufügen:

xmlns:xdb="http://xmlns.oracle.com/xdb" 
Verwandte Themen