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;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值