ORACLE之 访问 BLOB
来源:互联网 发布:北交大网络教育官网 编辑:程序博客网 时间:2024/05/22 14:31
访问 BLOB
BLOB 用于存放大批量的二进制数据。所允许的最大数据长度为 4G 字节。在 oracle8 版本以前使用 LONG RAW 存放大批量二进制数据,且最大长度为 2G 字节。
示例
建立包含 BLOB 列的表
create table lob_example( serial number(6) primary key, p_name varchar2(10), photo blob);
初始化 BLOB 列
使用 EMPTY_BLOB() 初始化 BLOB 列。该函数没有提供任何数据,但是分配了 LOB 定位符。
insert into lob_example values(1, 'Zhangsan', empty_blob());insert into lob_example values(2, 'Lisi', empty_blob());
将二进制文件内容写入 BLOB 列
创建 BFILE 与本地磁盘关联的目录
create or replace directory ORCL_DIR as 'D:\tools';
使用包 DBMS_LOB 的过程 LOADBLOBFROMFILE。
declare lob_loc blob; file_loc bfile; amount int; src_offset int := 1; dest_offset int := 1;begin select photo into lob_loc from scott.lob_example where serial=&serial for update; file_loc := bfilename('ORCL_DIR', '&filename'); dbms_lob.fileopen(file_loc, 0); amount := dbms_lob.getlength(file_loc); dbms_lob.loadblobfromfile(lob_loc, file_loc, amount, dest_offset, src_offset); dbms_lob.fileclose(file_loc); commit;end;
读取 BLOB 列数据
因为 BLOB 列中存放着二进制数据,所以当读取其数据时应该使用 RAW 变量接收其数据。使用包 DBMS_LOB 的过程 READ。
declare lob_loc blob; buff raw(32767); amount int; offset int := 1;begin select photo into lob_loc from scott.lob_example where serial=&serial; amount := dbms_lob.getlength(lob_loc); dbms_lob.read(lob_loc, amount, offset, buff);end;
注:"buff raw(32767);"必须要保证足够缓冲容量。如果读取 BLOB 列的数据较大应该使用循环方式进行处理。
将 BLOB 列的数据写入到二进制文件
使用包 DBMS_LOB 读取 BLOB 列的数据,并且还需要使用 UTL_FILE 包建立二进制文件并写入内容。
declare lob_loc blob; buff raw(2000); amount int; offset int := 1; handle utl_file.file_type;begin select photo into lob_loc from scott.lob_example where serial=&serial; amount := dbms_lob.getlength(lob_loc); dbms_lob.read(lob_loc, amount, offset, buff); handle := utl_file.fopen('ORCL_DIR', 'p.bmp', 'w', 2000); utl_file.put_raw(handle, buff); utl_file.fclose(handle);end;
注:"buff raw(2000);"必须要保证足够缓冲容量。如果读取 BLOB 列的数据较大应该使用循环方式进行处理。
- ORACLE之 访问 BLOB
- 访问blob
- oracle数据库远程链接后访问BLOB字段问题
- 访问oracle数据链路的blob字段值
- oracle里BLOB字段的HIBERNATE,spring操作访问
- Oracle Blob
- Oracle Blob
- ORACLE之 访问 CLOB
- ORACLE之 访问 BFILE
- Java之Byte和blob相互转换(Oracle)-yellowcong
- 关于ODBC的配置、访问ORACLE的BLOB及CString的保存
- ORACLE操作BLOB字段
- Oracle数据库中的BLOB
- oracle----blob vs clob
- Oracle Blob 插入
- oracle 创建blob
- Oracle Blob读写过程
- 读取oracle blob字符串
- Html Dom 学习
- asp.net fso 操作
- 常见android工程修改
- 图像的旋转与缩放
- 关于sql2008卸载后再安装问题
- ORACLE之 访问 BLOB
- asp.net 去除HTML格式
- (转)Android 8款开源游戏引擎
- Android .classpath文件的作用
- asp.net 动态控件事件
- 最长公共子序列问题
- NSData+Base64
- 创建注记图层要素
- boost 1.52 编译自己整理,这个适合自己