Error de escritura UTL_FILE

Cristian Gonz?z
24 de Agosto del 2005
Hola a todos.
Tengo un procedimiento que llama repetidamente a la creacion de un fichero usando UTL_FILE.
Es algo asi :

LOOP
l_id := UTL_FILE.FOPEN(dir, nom_fic, 'w');
LOOP
aca viene las sentencias UTL_FILE.PUTF(l_id, 'texto');
END LOOP;
UTL_FILE.FCLOSE(l_id);
END LOOP;

la variable nom_fic va cambiando cada vez, con lo que se asegura que el fichero es distinto.
El problema es que el programa se cae aleatoriamente. A veces en la segunda lectura, a veces en la cuarta, etc.
Y el error que da al caerse es el utl_file.write_error.
Ese mensaje lo lanza al momento de hacer el FCLOSE.
Lo extraño de todo esto es que si hubiese un problema de datos, se caería siempre en la misma lectura, pero tal como lo mencioné, si vuelvo a lanzar el programa, pasa bien el registro en que se cayo antes y se cae en otro posterior.
Si en vez de hacer un ciclo, lanzo sólo un registro por separado, no se cae.

Si alguien sabe algo por favor necesito ayuda, porque realmente no sé que puede ser.
De antemano muchas gracias.

Pablo Ponte
24 de Agosto del 2005
Estas haciendo el FCLOSE dentro del ciclo o recien cuando tratas el error???

Una solución seria cerrar todos los punteros a archivos antes de abrir uno nuevo:

LOOP
l_id := UTL_FILE.FOPEN(dir, nom_fic, 'w');
LOOP
aca viene las sentencias UTL_FILE.PUTF(l_id, 'texto');
END LOOP;
UTL_FILE.FCLOSE_all;
END LOOP;

Fiajte si eso soluciona tu problema...sino mandame el código completo y veo si te puedo dar una solución alternativa...

Salu2