ORACLE之 訪問 BFILE

訪問 BFILE
BFILE 是外部 LOB 類型,存放着指向 OS 文件的指針,其所對應的文件長度不能超過 4G。BFILE 所對應的 OS 文件內容只能讀取不能修改。
在 oracle 數據庫訪問 OS 文件時,首先必須建立 DIRECTORY 對象;而建立 DIRECTORY 對象則要求用戶必須具有 CREATE ANY DIRECTORY 權限。

爲用戶授予 CREATE ANY DIRECTORY 權限

conn sys/sys as sysdba
grant create any directory to scott;


創建 DIRECTORY 對象

conn scott/tiger
create [ or replace ] directory ORCL_DIR as 'D:\sql';

 

示例


建立包含 BFILE 列的表

create table lob_example
(
  serial number(6) primary key,
  p_name varchar2(10),
  p_resume bfile
);

 

初始化 BFILE 列
使用函數 BFILENAME() 來初始化 BFILE 列。使用 BFILENAME() 函數時, DIRECTORY 對象必須使用大寫格式。

insert into lob_example values(1, 'KING', bfilename('ORCL_DIR','KING.txt'));
insert into lob_example values(2, 'AMY', bfilename('ORCL_DIR', 'AMY.txt'));;

 

讀取 BFILE 列的數據
使用包 DBMS_LOB 的 READ,使用 RAW 類型的變量接收其讀出的數據。

declare
  buff raw(2000);
  amount int;
  offset int := 1;
  lob_loc bfile;
begin
  select p_resume into lob_loc from scott.lob_example where serial=&serial;
  dbms_lob.fileopen(lob_loc, 0);
  amount := dbms_lob.getlength(lob_loc);
  dbms_lob.read(lob_loc, amount, offset, buff);
  dbms_lob.fileclose(lob_loc);
end;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章