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 45 46 47 48 49
|
Procédure UTL_FILE
Cette procédure permet d' écrire dans un fichier texte le contenu d' une table se trouvant sur le serveur ou elle est exécutée .
Le répertoire utilisé doit être renseigné dans le fichier initSID.ora :
Utl_file_dir=d:\forma\temp
Dans cet exemple , la table DEPT est chargée dans le fichier d:\forma\temp\fic.txt .
Chaque champ est séparé par une tabulation .
DECLARE
CURSOR c1 IS SELECT * FROM DEPT ; déclaration du curseur , car plus d' une ligne est ramenée .
col1 dept.DEPTNO%type; ( on déclare les colonnes
col2 dept.DNAME%type; qui seront passées dans le buffer )
col3 dept.LOC%type;
w_dir VARCHAR2(50) := 'd:\forma\temp';
w_fic VARCHAR2(20) := 'fic.txt';
w_mod VARCHAR2(1) := 'a'; (mode a append,w write,r lecture)
log_file utl_file.file_type; (descripteur du fichier)
buffer VARCHAR2(1023) := ''; ( buffer recevant les données du
curseur)
BEGIN
log_file := UTL_FILE.FOPEN (w_dir, w_fic, w_mod); ouverture du fichier
OPEN c1; ouverture du curseur
LOOP
FETCH c1 INTO col1,col2,col3;
EXIT WHEN c1%NOTFOUND;
buffer := col1||CHR(9)||col2||CHR (9)||col3;
UTL_FILE.PUT_LINE (log_file, buffer); (ecriture dans le fichier)
END LOOP;
UTL_FILE.FCLOSE (log_file); fermeture du fichier
END;
/
CHR(9) donne le caractere hexa de " 9 " soit une tabulation .
Le buffer doit faire au maximum 1023 caractéres .
la boucle loop endloop écrit dans le fichier ligne par ligne
jusqu' à la fin par l' intermédiaire de la commande fetch . |
Partager