Have you looked at DBMS_OUTPUT?

Assuming you are running your procedure from SQL*Plus,
you should be able to do what you want.

enter the following in SQL*Plus :

spool c:\my_file.txt
set serveroutput on

-- this is the buffer size for the text
-- you are going to output from your
-- procedure. make it bigger if you need to.
execute dbms_output.enable(100000);

-- call your procedure...
execute my_procedure;

-- turn off dbms_output
set serveroutput off;
spool off;


in your procedure, you can spool text like this :

dbms_output.put_line('whatever');