需要用到utl_file包看例子:
先修改或添加init.ora的UTL_FILE_DIR参数
例如:
utl_file_dir=G:\oracle\temp    //保存文本的路径为G:\oracle\temp
此过程将用户FILE_OWNER的过程FILE_NAME的代码保存到G:\oracle\temp\TEXT.TXT中
create or replace procedure PRO_TO_TXT(FILE_OWNER VARCHAR2,FILE_NAME VARCHAR2)
is
   file_handle  utl_file.file_type;
   STOR_TEXT  VARCHAR2(4000);
   N NUMBER;
I NUMBER;
begin
I:=1;
    SELECT MAX(LINE) INTO N FROM ALL_SOURCE WHERE OWNER=FILE_OWNER AND  NAME=FILE_NAME AND TYPE='PROCEDURE';
file_handle:=utl_file.fopen('G:\oracle\temp','test.txt','a');
utl_file.put_line(file_handle,'PROCEDURE NAME:'||FILE_NAME);
WHILE I<=N LOOP
    SELECT TEXT  INTO STOR_TEXT FROM ALL_SOURCE WHERE OWNER=FILE_OWNER 
AND NAME=FILE_NAME AND TYPE='PROCEDURE' AND LINE= I;
    I:=I+1;
    utl_file.put_line(file_handle,stor_text);
END LOOP;
    utl_file.fclose(file_handle);
commit;
end PRO_TO_TXT;
/

解决方案 »

  1.   

    utl_file是用来写文件的,但是只是写到服务器端,而且要修改init.ora文件,才能进行写
      

  2.   

    如果在sqlplus 中执行*.sql文件,可以用spool 命令生成日志
      

  3.   

    biliky,我说的自定义日志!就是在执行了某些语句后记录一些自己定义的日志。
      

  4.   

    bzszp(www.bzszp.533.net),我搞不懂你的两个参数干嘛?
    我需要的只是 PRO_TO_TXT(日志文件路径,日志文件名称,日志内容) 啊!