Para el tratamiento de ficheros de texto desde un procedimiento de Oracle, hay que usar las funciones que proporciona el package UTL_FILE.
Más info sobre este package puede obtenerse de:
http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96612/u_file.htm
La relación exacta de funciones y sus parámetros puede obtenerse de:
http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96612/u_file2.htm#1000703
Para trabajar con ficheros, previamente se debe haber creado un «directorio». Un directorio es un objeto lógico que Oracle utiliza como intermediario entre el PL/SQL y el directorio físico.
Sólo los usuarios de sistema pueden crear directorios y conceder derechos al resto de los mortales. Por lo tanto, hay que solicitar a Centro de Información, Administrador si es el caso o sino crearlo con un usuario de sistema, la creación de dicho directorio, con sentencias como estas:
CREATE DIRECTORY DGQ_OFICINES AS ‘\\asf2\public\mi_directorio’;
GRANT READ ON DIRECTORY DGQ_OFICINES TO SIRA;
GRANT WRITE ON DIRECTORY DGQ_OFICINES TO SIRA;
(por supuesto, el usuario Oracle ha de tener acceso a dicho recurso físico, o éste debe tener acceso público)
Después, hay que usar DGQ_OFICINES, en las llamadas de las funciones (por ejemplo, en el FOPEN). Se ha de poner en mayúsculas.
Ejemplo de código que crea un fichero y escribe una línea:
procedure file_test as
ft utl_file.file_type;
begin
ft := utl_file.fopen(‘DGQ_OFICINES’,’test.txt’,’w’,500);
utl_file.put_line(ft,’hola’,false);
utl_file.fclose(ft);
end;
En este caso, este código abre un fichero (lo crea si no existe y lo machaca si existe).
FT es el handle al fichero. Se asigna con FOPEN y se usa en posteriores operaciones.
FOPEN recibe el nombre del directorio, el nombre del fichero, el modo (read, write o append), y el tamaño máximo de linea a escribir o leer del fichero.
PUT_LINE escribe un texto, añadiendo un separador de línea (hay otra función que no lo añade). Finalmente, el fichero se cierra con FCLOSE.
Filed under: development, howto, informatica, oracle, programacion, trucos | Tagged: database, development, howto, manual, oracle, programacion, sql, tutorial | 2 Comments »