U leest het bestand regel voor regel, maar overschrijft uw xmlClob
met elke regel, niet toevoegend. Je zou de CLOB kunnen opbouwen door in te lezen in een varchar2
buffer en appending, maar u kunt ook de DBMS_LOB
. gebruiken ingebouwde procedures om het voor u te doen:
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 (
...
Als ik dat gebruik en je bestand laad, krijg ik de output:
CUZK Pod smdli.t.m 1800/9
U wilt waarschijnlijk een foutcontrole rond de DBMS_LOB
oproepen, dit is slechts een eenvoudige demo.