Tema: utl_file
Ver Mensaje Individual
  #5 (permalink)  
Antiguo 29/10/2007, 13:52
Avatar de matanga
matanga
 
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años
Puntos: 85
Re: utl_file

Hola,

Este es un ejemplo de la documentacion de Oracle sobre como utilizar el package UTL_FILE.

Código:
DECLARE 
  V1 VARCHAR2(32767); 
  F1 UTL_FILE.FILE_TYPE; 
BEGIN 
  -- En este ejemplo MAX_LINESIZE es menos que la longitud solicitada por GET_LINE
  -- asi que el numero de bytes devueltos sera 256 o menos si se encuentra un delimitador de linea.
  F1 := UTL_FILE.FOPEN('MYDIR','MYFILE','R',256); --256 es MAX_LINESIZE
  UTL_FILE.GET_LINE(F1,V1,32767); 
  UTL_FILE.FCLOSE(F1); 

  -- En este ejemplo, MAX_LINESIZE en FOPEN es NULL y el valor por defecto es 1024
  -- asi que el numero de bytes devueltos sera 1024 o menos si se encuentra un delimitador de linea.
  F1 := UTL_FILE.FOPEN('MYDIR','MYFILE','R'); 
  UTL_FILE.GET_LINE(F1,V1,32767); 
  UTL_FILE.FCLOSE(F1); 

  -- En este ejemplo, GET_LINE no especifica un numero de bytes, asi que el valor por defecto es
  -- el mismo que MAX_LINESIZE de la funcion FOPEN, que es NULL, por lo tanto 1024 bytes,
  -- asi que el numero de bytes devueltos sera 1024 o menos si se encuentra un delimitador de linea.

  F1 := UTL_FILE.FOPEN('MYDIR','MYFILE','R'); 
  UTL_FILE.GET_LINE(F1,V1); 
  UTL_FILE.FCLOSE(F1); 

END;
1. Falta, en el ejemplo, el manejador de excepciones, el mismo paquete provee algunas muy utiles, como por ejemplo INVALID_PATH, READ_ERROR, WRITE_ERROR, INVALID_FILENAME, ACCESS_DENIED, DELETE_FAILED, etc. Aunque siempre se puede utilizar OTHERS.

2. No probe el codigo, no se si supera el parseo.

3. Nota adicional, UTL_FILE_DIR=* es valido como contenido del parametro, pero es considerado no-seguro, cualquier usuario de base de datos con permisos de ejecucion sobre el paquete UTL_FILE, tendra el mismo nivel de acceso al filesystem que el usario oracle en Linux/Unix y que System en Windows.

Saludos.