Piénsalo de esta manera, ¿qué crees que puede salir mal?.
Como no dices mucho sobre el procedimiento, vamos a suponer que creas un fichero a partir de los datos de una tabla, por ejemplo:
Código:
create or replace procedure write_file (
directory in varchar2,
filename in varchar2)
is
file utl_file.file_type;
begin
file := utl_file.fopen (directory,filename, 'W');
for rec in (select d from t1) loop
begin
utl_file.put_line (file, rec.d);
exception
when others then
dbms_output.put_line('Error en la escritura de la línea ' || rec.d);
end;
end loop;
utl_file.fclose(file);
exception
when others then
dbms_output.put_line(sqlerrm);
end;
/
Las diferentes funciones de utl_file (en este ejemplo, fopen, put_line y fclose) tienen sus propias excepciones que te van a informar si algo va mal, por lo que puedes hacer un "catch" en la apertura del fichero, en cada línea que se escribe y en el cierre, e informar del resultado desde dentro de la base de datos, todo esto le quita el sentido a una validación adicional del proceso contando la cantidad de líneas del fichero resultante.
De todos modos, en respuesta a la pregunta, la única forma de saber cuantas líneas tiene un fichero con el paquete utl_file es abrirlo, recorrerlo y contar.
Saludos