Oracle提供的文件操做包UTL_FILE包中的UTL_FILE.FOPEN負責打開一個文件。 UTL_FILE.FOPEN(location in varchar2, filename in varchar2, open_mode in varchar2) return FILE_TYPE; Location 是路徑參數, FILENAME 是文件名, OPEN_MODE是打開模式,'R'是讀文本,'W'是寫文本,'A'是附加文本,參數不分大小寫,若是指定'A'可是文件不存在,它會用'W'先建立出來,'W'有覆蓋的功能; 其中的location並不能簡單的指定爲'D:\temp'等路徑,要創建一個DIRECTORY變量並付給權限(必須以DBA身份登陸): Sql代碼 create or replace directory D_OUTPUT as 'D:\TEMP'; grant read,write on directory D_OUTPUT to testdb; GRANT EXECUTE ON utl_file TO testdb; 以後就能夠用UTL_FILE包創建文件了 Sql代碼 V_FILE UTL_FILE.FILE_TYPE; V_FILE := UTL_FILE.FOPEN('D_OUTPUT', 'Data.txt', 'w'); 就能夠在數據庫服務器的D:\TEMP創建Data.txt 源文檔 <http://lveyo.javaeye.com/blog/351416> 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( '/oradata/procedure_bak', 'zhfx117.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;