1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| Begin
v_bfile := BFileName(Repertoire, Fichier);
DBMS_LOB.createtemporary(v_clob, cache=>FALSE);
DBMS_LOB.open(v_bfile, DBMS_LOB.lob_readonly);
DBMS_LOB.loadFromFile(v_clob,v_bfile,DBMS_LOB.getLength(v_bfile));
DBMS_LOB.close(v_bfile);
DBMS_SESSION.SET_NLS('NLS_DATE_FORMAT','''DD/MM/YYYY''');
-- Création d'un PARSER
v_parser := DBMS_XMLPARSER.newParser;
-- On parse le document et on crée un nouveau document DOM
DBMS_XMLPARSER.parseClob(v_parser, v_clob);
v_doc := DBMS_XMLPARSER.getDocument(v_parser);
-- On libére les ressources associées à v_clob et v_parser, comme nous n'en avons plus besoin
DBMS_LOB.freetemporary(v_clob);
DBMS_XMLPARSER.freeParser(v_parser);
-- liste des noeuds
v_nl := DBMS_XSLPROCESSOR.selectNodes(DBMS_XMLDOM.makeNode(v_doc),'/flux_financiers/flux_financier');
-- type record (1 item = 1 noeud de la liste v_nl)
FOR cur_auditeur IN 0..DBMS_XMLDOM.getLength (v_nl) - 1 LOOP
P_NBRE_LIGNES := P_NBRE_LIGNES + 1;
f_insert := 1; -- initialiser par defaut au mode insertion
lerreur := 'SRUCTURE INCORRECTE DU FICHIER:';
formule.date_create := sysdate;
chaine.date_create := formule.date_create;
-- on utilise la syntaxe XPATH pour affecter les valeurs des éléments
--
-- DEBUT DE LECTURE DU FICHIER XML
--
DBMS_XSLPROCESSOR.valueOf( DBMS_XMLDOM.item(v_nl, cur_auditeur) ,'Identification_ligne/code_ligne/text()', chaine.code_ligne); -- varchar2(50)
--
DBMS_XSLPROCESSOR.valueOf( DBMS_XMLDOM.item(v_nl, cur_auditeur) ,'Identification_agence/code_banque/text()',chaine.code_banque); -- varchar2(3)
..............
Exception when others then
P_NMES:=sqlcode;
verreur := Sqlerrm;
P_LMES:=verreur;
DBMS_XMLDOM.freeDocument(v_doc);
END; |
Partager