参考:
先修改或添加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;
/
oracle 8.1.5中测试通过

解决方案 »

  1.   

    9i
    utl_file_dir=d:\CREATE OR REPLACE FUNCTION WCLIENT.Logfile_write (
    /*共通部品:logファイル出力(logファイル未存在時はcreate、存在時は既存の内容に追記する)
    ファイル名 d:\データ移行処理結果.log
    (処理:             開始終了: 終了:     正常更新件数,エラー件数)
    例:“顧客マスタ” ,start_time, end_date,count_ok, count_ng
    */
    C_ERRTBL VARCHAR2,
    -- C_ERRTBL  date,
    -- C_ERRNUM  date,
    -- C_ERRMES  NUMBER,
    C_ERRKEY  NUMBER
    ) RETURN NUMBER
    IS 
    file_handle UTL_FILE.FILE_TYPE;
    begin
    file_handle := UTL_FILE.FOPEN('D:\', sysdate||'.txt', 'a'); UTL_FILE.PUTF(file_handle, C_ERRTBL||'  ' || '\n');-- UTL_FILE.Put_Line(file_handle,C_ERRPRC); UTL_FILE.FCLOSE(file_handle);
    -- WHEN utl_file.invalid_path THEN--SHOW ERRORS FUNCTION B_TRANS_KANA_FUNC
    EXCEPTION
    WHEN OTHERS THEN
    raise_application_error(-20000, 'ERROR: Invalid path for file or path not in INIT.ORA.');END;
    /