Oracle - UTLFILE

   
Vista:

UTLFILE

Publicado por UTLFILE (3 intervenciones) el 22/07/2015 23:40:08
Buena tardes, gracias ante todo.
Esto es un pequeño pedaso del codigo, pero en teoria para la prueba debe funcionar.
Lo que estos realizando es un procedimiento que genere una informacion y la escriba en un archivo plano. Y luego se va colocar en un ftp. Pero la parte que no esta haciento es reconocioendo la ruta interna de linux.
La funcion par_obtener_parametros. Me trae el path de oracle, donde se va almacenar la información.
El directorio ingresos_cut', ya esta creado y con sus Grant correspondientes.

ORA-29280: invalid directory path
ORA-06512: at "SYS.UTL_FILE", line 33
ORA-06512: at "SYS.UTL_FILE", line 436
ORA-06512: at line 14




declare
v_file_handle UTL_FILE.FILE_TYPE;
V_user_count number;
v_file VARCHAR2(30) := 'prueba.txt';
vc_path VARCHAR2 (100);

BEGIN
SELECT count( *)
INTO V_user_count
FROM all_tables;

vc_path := Par_Obtener_Valor_Parametro ('ingresos_cut');
DBMS_OUTPUT.PUT_LINE(V_user_count||'Count');
V_File_handle :=UTL_FILE.FOPEN(vc_path,v_file, 'w') ;
UTL_FILE.PUT_LINE(V_File_handle , ' ---- User log -----' ) ;
UTL_FILE.NEW_LINE(V_File_handle) ;
UTL_FILE.PUT_LINE(V_File_handle , ' on ' ||TO_CHAR( SYSDATE, ' MM/DD/YY HH24: MI' )) ;
UTL_FILE.PUT_LINE(V_File_handle ,' Number of tables: ' || V_user_count) ;
UTL_FILE.PUT_LINE(V_File_handle , ' ---- End log -----' ) ;
UTL_FILE.NEW_LINE(V_File_handle) ;
UTL_FILE.FCLOSE(V_File_handle) ;

end;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

UTLFILE

Publicado por Rafael rafael@reef-life.com.mx (178 intervenciones) el 23/07/2015 08:44:40
Hola:

Para que Oracle pueda ver un directorio del sistema operativo tiene que tener creado en la base de datos un OBJETO llamado Directory Por ejemplo:

1
2
SQL>CREATE DIRECTORY log_dir AS '/appl/gl/log';
SQL>GRANT READ ON DIRECTORY log_dir TO DBA;

de tal forma que cuando recuperas este dato:
1
2
3
vc_path := Par_Obtener_Valor_Parametro ('ingresos_cut');
DBMS_OUTPUT.PUT_LINE(V_user_count||'Count');
V_File_handle :=UTL_FILE.FOPEN(vc_path,v_file, 'w') ;

vc_path deberia contener el NOMBRE del directorio que has creado no propiamente el PATH.

Has verificado esto ???
Cualquier cosa no dejes de comentarnos.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

UTLFILE

Publicado por ggo (3 intervenciones) el 23/07/2015 15:50:34
Buen día,
Ya estaba creado, pero en otra ruta.

CREATE OR REPLACE DIRECTORY
INGRESOS_CUT AS
'/tmp/cut_in';


GRANT READ, WRITE ON DIRECTORY INGRESOS_CUT TO ETAX_PROD WITH GRANT OPTION;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar