Sie lesen die Datei Zeile für Zeile, überschreiben aber Ihren xmlClob
mit jeder Zeile, nicht anhängen. Sie könnten das CLOB aufbauen, indem Sie in ein varchar2
einlesen zwischenspeichern und anhängen, aber Sie können auch DBMS_LOB
verwenden eingebaute Prozeduren, die das für Sie erledigen:
DECLARE
xmlClob CLOB;
xmlFile BFILE;
x XMLType;
src_offset number := 1 ;
dest_offset number := 1 ;
lang_ctx number := DBMS_LOB.DEFAULT_LANG_CTX;
warning integer;
BEGIN
xmlFile := BFILENAME('XMLPARSERADRESYCUZK', 'pokus.xml');
DBMS_LOB.CREATETEMPORARY(xmlClob, true);
DBMS_LOB.FILEOPEN(xmlFile, DBMS_LOB.FILE_READONLY);
DBMS_LOB.LOADCLOBFROMFILE(xmlClob, xmlFile, DBMS_LOB.LOBMAXSIZE, src_offset,
dest_offset, DBMS_LOB.DEFAULT_CSID, lang_ctx, warning);
x := XMLType.createXML(xmlClob);
DBMS_LOB.FILECLOSEALL();
DBMS_LOB.FREETEMPORARY(xmlClob);
FOR r IN (
...
Wenn ich das benutze und Ihre Datei lade, bekomme ich die Ausgabe:
CUZK Pod smdli.t.m 1800/9
Sie möchten wahrscheinlich eine Fehlerüberprüfung rund um DBMS_LOB
Anrufe, dies ist nur eine einfache Demo.