网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>数据库技术>>Oracle技术>>Oracle开发>查看文档  
  如何使用pl/sql读取数据库中的blob对象     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:92次  录入:管理员--2008-03-27  
 

【赛迪网-it技术报道】使用pl/sql从数据库中读取blob对象: style="text-indent:2em">1.首先,确认现有对象

sql> col fdesc for a30
sql> select fid,fname,fdesc from eygle_blob;

    fid fname                        fdesc
------------------------ ------------------------------
   1 shaolin.jpg                少林寺-康熙手书
   2 daoying.jpg                     倒映

2.创建存储directory

sql> connect / as sysdba
connected.
sql> create or replace directory blobdir as 'd:oradatapic';

directory created.

sql>
sql> grant read,write on directory blobdir to eygle;

grant succeeded.

sql>

3.创建存储过程

sql> connect eygle/eygle
connected.
sql>
sql> create or replace procedure eygle_dump_blob (piname varchar2,poname varchar2) is
  2    l_file      utl_file.file_type;
  3    l_buffer    raw(32767);
  4    l_amount    binary_integer := 32767;
  5    l_pos       integer := 1;
  6    l_blob      blob;
  7    l_blob_len  integer;
  8  begin
  9    select fpic
 10    into      l_blob
 11    from      eygle_blob
 12    where  fname = piname;
 13
 14    l_blob_len := dbms_lob.getlength(l_blob);
 15    l_file := utl_file.fopen('blobdir',poname,'wb', 32767);
 16
 17    while l_pos < l_blob_len loop
 18      dbms_lob.read (l_blob, l_amount, l_pos, l_buffer);
 19      utl_file.put_raw(l_file, l_buffer, true);
 20      l_pos := l_pos + l_amount;
 21    end loop;
 22
 23    utl_file.fclose(l_file);
 24
 25  exception
 26    when others then
 27      if utl_file.is_open(l_file) then
 28        utl_file.fclose(l_file);
 29      end if;
 30      raise;
 31  end;
 32  /

procedure created.

4.最后取出数据

sql> host ls -l d:oradatapic
total 7618
-rwxrwxrwa   1 gqgai           none            2131553 apr 19 10:12 daoying.jpg
-rwxrwxrwa   1 gqgai           none            1768198 apr 19 10:12 shaolin.jpg

sql> exec eygle_dump_blob('shaolin.jpg','01.jpg')

pl/sql procedure successfully completed.

sql> host ls -l d:oradatapic
total 11072
-rwxrwxrwa   1 administrators  system          1768198 apr 26 07:16 01.jpg
-rwxrwxrwa   1 gqgai           none            2131553 apr 19 10:12 daoying.jpg
-rwxrwxrwa   1 gqgai           none            1768198 apr 19 10:12 shaolin.jpg

sql>
sql> exec eygle_dump_blob('daoying.jpg','02.jpg')

pl/sql procedure successfully completed.

sql> host ls -l d:oradatapic
total 15236
-rwxrwxrwa   1 administrators  system          1768198 apr 26 07:16 01.jpg
-rwxrwxrwa   1 administrators  system          2131553 apr 26 07:19 02.jpg
-rwxrwxrwa   1 gqgai           none            2131553 apr 19 10:12 daoying.jpg
-rwxrwxrwa

 
 
上一篇: 如何正确的使用or展开来改写sql查询    下一篇: 用forall与bulk collect快速复制表数据 (1)
  相关文档
Oracle数据库中如何改善表空间的管理 04-11
如何调整"oracle"数据库服务器的性能 03-10
重建oracle数据库控制文件的简单方法 05-13
如何查找运行在系统里的"bad sql"语句 02-03
Oracle数据库应用系统调优方法介绍 04-11
如何更改rac的vip地址和集群互联地址 (1) 03-07
dba应当如何查看oracle数据库连接情况 04-14
在oracle中添加用户 赋权 修改密码 解锁 05-29
讲解oracle优化器的优化方式和优化模式 (1) 03-27
如何使用“排序哈希簇”来提高查询速度 01-24
oracle数据库内存参数调优技术的个人总结 (1) 05-07
实例讲解oracle9i中的一个特殊等待事件 01-28
用pipelined table实现split函数的示例 06-23
教你轻松掌握如何用toad或oem管理job 02-28
如何判断一个字符串的内容是否是数值 04-03
Oracle中对像名大小写敏感性的深入解析 08-05
oracle数据库环境下数据文件丢失的恢复 07-25
通过JDBC连接Oracle数据库的十大技巧 04-11
Oracle的自动数据库诊断监控程序剖析 04-11
Oracle中decode()函数的使用技巧 09-29
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息