需要使用Oracle stored procedure 使用UTL_FILE這類需要讀取實體檔案的需要先設定DIRECTORY

 

DIRECTORY語法如下
CREATE [OR REPLACE] DIRECTORY directory AS 'pathname';

例如:
create or replace directory exp_dir as 'c:\tmp';

賦予權限,語法如下
GRANT READ[,WRITE] ON DIRECTORY directory TO username;

例如:
grant read, write on directory exp_dir to ods;

範例:
create or replace directory UTL_FILE_DIR as 'c:\tmp\UTL_FILE_DIR';

寫入檔案
SQL> declare
  2    fhandle utl_file.file_type;
  3  begin
  4    fhandle := utl_file.fopen('UTL_FILE_DIR', 'ex.txt', 'w');
  5    utl_file.put_line(fhandle , '第一行');
  6    utl_file.put_line(fhandle , '第二行');
  7    utl_file.fclose(fhandle);
  8  end;
  9  /

讀取檔案
SQL> declare
  2    fhandle   utl_file.file_type;
  3    fp_buffer varchar2(4000);
  4  begin
  5    fhandle := utl_file.fopen ('UTL_FILE_DIR','ex.txt', 'R');
  6  
  7    utl_file.get_line (fhandle , fp_buffer );
  8    dbms_output.put_line(fp_buffer );
  9    utl_file.get_line (fhandle , fp_buffer );
 10    dbms_output.put_line(fp_buffer );
 11    utl_file.fclose(fhandle);
 12  end;
 13  /

查詢dba_directories查看所有directory
select * from dba_directories;

可以使用drop directory删除路徑
drop directory exp_dir;

 

 

UTL_FILE用法可參考:http://www.verydemo.com/demo_c158_i28384.html

創作者介紹
創作者 Bear-小小工程師學習筆記 的頭像
carefree55

Bear-小小工程師學習筆記

carefree55 發表在 痞客邦 留言(0) 人氣( 2422 )