Realizar Lectura / Escritura de ficheros en PL/SQL

Toni
30 de Septiembre del 2003
Buenas a todos,

Estoy preparándome para desarrollar con PL/SQL y estoy viendo el tema de como tratar ficheros y he estado viendo en internet que existe un paquete denominado UTL_FILE que es el que permite tanto leer como escribir en fichero. El único problema que veo es que hay que parametrizar una variable en el INIT.ORA, la utl_file_dir creo que es. La pregunta es la siguiente: ¿ESTA ES LA UNICA POSIBILIDAD DE TRATAR FICHEROS BAJO PL/SQL, O EXISTE ALGUN OTRO PAQUETE PARA HACERLO? Ojo, el tratamiento de ficheros lo quiero realizar exclusivamente con mandatos PL/SQL, no con ninguna herramienta externa.

Muchas Gracias de antemano ...

Saludos


nerea
30 de Septiembre del 2003
Que yo sepa es la única posibilidad. Pero funciona muy bien.
El parámetro del init.ora efectivamente es el utl_file_dir. Que se define así:

Si quieres restringirlo a un directorio, por ejemplo, /tmp:

utl_file_dir=/tmp

Si no quieres realizar restricciones, y que se pueda acceder a cualquier directorio:

utl_file_dir=*

Toni
30 de Septiembre del 2003
Gracias por aclararme esa duda, pero tengo otra pregunta:

El parámetro utl_file_dir se puede poner en cualquier punto del INIT.ORA, o es necesario ponerlo en algún sitio especial?

Muchas Gracias de nuevo.

Saludos
Toni

nerea
30 de Septiembre del 2003
No importa donde lo pongas,... ponlo al final si quieres.
Pero ten en cuenta, que para que te coja los parámetros del init.ora debes rearrancar la base de datos.

MAFC
30 de Septiembre del 2003
Si no quieres tener que reiniciar la base de datos para que lea del init.ora el utl_file_dir tambien puedes hacerlo creandote un directorio mediante esta orden con el usuario sys:

CREATE OR REPLACE DIRECTORY EXPORTS AS '/opt/oracle/utl_file_temp';

GRANT READ ON DIRECTORY EXPORTS TO TIBCOADM;

La primera sentencia crea el directorio donde vas a escribir o leer. La segunda da permiso al usuario que va ha utilizar ese directorio.

Para usarlo haz esto.

fHandle := UTL_FILE.FOPEN('EXPORTS','tibco_dwh.txt','A');


Lo bueno de esto es que es en caliente y no hace falta reiniciar la bd.


Un saludo