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 . |