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
|
DECLARE
fileh UTL_FILE.file_type;
CURSOR c_releve
IS
SELECT DISTINCT *
FROM odg_trente_compte;
CURSOR c_detail (p_compte IN VARCHAR2)
IS
SELECT detail
FROM w_releve w
WHERE w.compte = p_compte
ORDER BY compte, ligne;
BEGIN
FOR r IN c_releve
LOOP
--Ouvrir un fichier sur le répertoire créer précédemment pour le compte en cours
fileh := UTL_FILE.fopen ('MY_DIRECTORY', r.compte || '.csv', 'w');
--Boucler sur le détail du compte
FOR d IN c_detail (r.compte)
LOOP
--Ecrir le détail ligne par ligne
UTL_FILE.put_line (fileh, d.detail);
END LOOP;
UTL_FILE.fclose (fileh);
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ( 'Exception: SQLCODE='
|| SQLCODE
|| ' SQLERRM='
|| SQLERRM
);
RAISE;
END; |