Error de escritura UTL_FILE
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.
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.
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
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
