PL/SQL : escribir en un fichero

Estoy escribiendo un script que escribe en un fichero.
El script es el siguiente,
set serveroutput on
declare
fichero utl_file.file_type;
begin
dbms_output.put_line('Esto es una prueba de escritura en un fichero.');
fichero := utl_file.fopen('d:\','pruPLSQL.txt','a');
dbms_output.put_line('Escribiendo...');
utl_file.put_line(fichero,'prueba');
utl_file.fclose(fichero);
exception
when utl_file.invalid_path then
dbms_output.put_line('invalid path!');
when others then
dbms_output.put_line('casco!');
end;
/
exit;
Y el problema es que me dice que el path es incorrecto.
Lo que me gustaría es que escribiera en un fichero en local y no en el servidor, y a mi me parece que esta buscando el path en el servidor.
He leído en una documentación de oracle que si que se puede escribir en el cliente, pero no se como.
1

1 respuesta

Respuesta
1
Cuando utilizas el utl_file(), debes señirte a lo que esté seteado en la variable UTL_FILE_DIR que se encuentra en el init<SID>. Ora de tu Base de Datos; de manera tal que si ésta variable apunta hacia /tmp, entonces todas las salidas donde utilices utl_file() van a parar allí por defecto. Si lo que deseas es que los archivos queden en tu disco local deberás tener aparte un script o un *.bat que te copie de ése lugar hacia tu disco local. Según lo que veo de tu script puedes utilizar otra opción que es spool. Por ejemplo antes de ejecutar el código anónimo de PL/SQL puedes escribir algo como esto: spool C:\archivo.txt, ...
Luego de que termine la ejecución del PL/SQL escribes: spool off y así tendrás tu salida en el disco local.
Por favor estudia ambas opciones, para que determines cual se ajusta más a tus necesidades.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas