Para eso despues de varias alternativas, decidi usar la funcion get_lines. Busque ejemplos en la web pero no encontraba nada simple, y me di cuenta que es una tontera.
Les dejo el codigo por si alguno le toca estar en esa situacion.
Explicacion:
/*Variables para tomar Output*/
v_cant_reg INTEGER:=40;
i number:=1;
v_registros DBMS_OUTPUT.CHARARR; /*Variable especial, que funciona como un arreglo*/
BEGIN
proceso_base() /*Proceso al que llame*/
dbms_output.get_lines(v_registros,v_cant_reg);
/*En la variable v_registros se inserta lo que haya en el
buffer en ese momento.
Le paso la cantidad de lineas a leer. Y me devuelve en
la misma variable, la cantidad de lienas que leidas */
file_handle := UTL_FILE.FOPEN(v_path,v_file_name,'W');
FOR I IN 1..v_cant_reg LOOP
/*Recorro la variable con los datos insertados
y los inserto en un archivo.
Puedo manegar los datos como cualquier varchar2*/
BEGIN
write_line:='RESULTADO: 'TO_CHAR(i) ': ' NVL (v_registros(i),'
UTL_FILE.PUT_LINE (file_handle, write_line);
EXCEPTION
WHEN OTHERS THEN
write_line:= 'RESULTADO: 'i ': ' sqlerrm ;
UTL_FILE.PUT_LINE (file_handle, write_line);
END;
END LOOP;