UTL_FILE.FOPEN的用法

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代碼

  1. create or replace directory D_OUTPUT as 'D:\TEMP';  
  2. grant read,write on directory D_OUTPUT to testdb;  
  3. GRANT EXECUTE ON utl_file TO testdb;  

 

 

之後就可以用UTL_FILE包建立文件了

 

Sql代碼

  1. V_FILE UTL_FILE.FILE_TYPE;  
  2. V_FILE := UTL_FILE.FOPEN('D_OUTPUT', 'Data.txt', 'w');  

 

 

就可以在數據庫服務器的D:\TEMP建立Data.txt

 

源文檔<http://lveyo.javaeye.com/blog/351416>

createor 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;

發佈了47 篇原創文章 · 獲贊 21 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章