欢迎您来到GIS动力

加入收藏 免费注册 用户登陆 帮助中心
首页 新闻动态 技术专栏 银杏树下 学习考研 软件下载 求职招聘 许愿瓶 节日祝福 用户中心 精彩推荐 资源搜索 地图
专栏导航: AO开发 | SO开发 | ArcGIS桌面 | 超图桌面 | 开发语言 | 数据库 | WebGIS | 银杏文学 | 研究生考题 | FreeMap FreeTalk
   您现在位于: 首页技术专栏数据库 → 正文
Blob字段存储图片的笔记
07-10-16 08:55:01 作者:半块点心 出处:本站原创
create or replace directory TEMP_DIR as 'D:TEMP';
set serveroutput on
DECLARE
v_id INT;
v_blob BLOB;
v_bfile BFILE;
v_desc INTEGER := 1;
v_src INTEGER := 1;
BEGIN

SELECT MIN(id)
INTO v_id
FROM test_lob
WHERE colblob IS NULL;
DBMS_LOB.CREATETEMPORARY(v_blob,TRUE);
v_bfile := BFILENAME('TEMP_DIR', 'DSC00279.JPG');
IF dbms_lob.fileexists(v_bfile) = 1 THEN
BEGIN
dbms_lob.fileopen(v_bfile, dbms_lob.file_readonly);
dbms_lob.loadblobfromfile(v_blob, --dest_lob IN OUT NOCOPY BLOB,
v_bfile, --src_bfile IN BFILE,
DBMS_LOB.LOBMAXSIZE,
v_desc,v_src);
dbms_lob.fileclose(v_bfile);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(SQLERRM);
dbms_lob.fileclose(v_bfile);
dbms_lob.freetemporary(v_blob);
RETURN;
END;
UPDATE test_lob
SET colblob=v_blob
WHERE ID=v_id;
COMMIT;
dbms_lob.freetemporary(v_blob);
ELSE
dbms_output.put_line('Physical file does not exist.');
END IF;

END;
/

--将Blob的图像写回到磁盘上,使用UTL_FILE.PUT_RAW来实现
--UTL_FILE将文件作为text方式处理,所以生成出来的文件需要用ue之类的软件作一下格式化,否则无法正常使用Acdsee等看图软件看到图片
DECLARE
v_id INT := 1;
v_blob BLOB;
v_file UTL_FILE.FILE_TYPE;
buffer RAW(32767);
amt BINARY_INTEGER := 32767;
pos INTEGER := 1;
v_bloblen INTEGER;
BEGIN
SELECT colblob INTO v_blob
FROM test_lob
WHERE ID = v_id AND colblob IS NOT NULL;

v_file := UTL_FILE.FOPEN('D:TEMP','TEST.JPG','w',32767);
v_bloblen := DBMS_LOB.GETLENGTH (v_blob);
WHILE pos <= v_bloblen LOOP
dbms_lob.read (v_blob, amt, pos, buffer);
utl_file.put_raw(v_file,buffer,TRUE);
pos := pos + amt;
END LOOP;
UTL_FILE.FCLOSE(v_file);

END;
/

(本文已被浏览 次)
发布人:admin
推荐给好友:发送给好友
上篇新闻:
下篇新闻:
相关评论
发表我的评论
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  •   相关文章  

    关于我们友情链接 ┋ 与我在线 ┋ 管理 ┋ TOP
     
    网站当前版本:GisPower CMS V3.0
    『GIS 动力』- http://www.gispower.org/
    联系我们:webmaster#gispower.org
    Copyright (c) 2003-2007 GisPOwer.Org. All Rights Reserved.
     

                   滇ICP备05006901号