如何将Blobg列的内容写入二进制文件

[复制链接]
查看11 | 回复8 | 2009-12-28 22:11:19 | 显示全部楼层 |阅读模式
建表
create table blob_table
(
id number(6) primary key,
name varchar2(10),
photo blob
)

建directory
create directory user_photo as 'G:照片'
插入数据
insert into blob_table values(1,'wangming',empty_blob())
insert into blob_table values(2,'guo',empty_blob())
自己写了个procedure 把二进制文件写到了表中,这就不贴出来了,总之photo这个栏位写入了一个文件,
现在的就是想把存到photo 这个栏位的内容写入二进制文件
过程如下:
CREATE OR REPLACE PROCEDURE SYS.download_file (NO NUMBER)
IS
blob_loc BLOB;
handle UTL_FILE.file_type;
photo_length INT;
amount INT;
offset INT
:= 1;
buffer RAW(1000);
temp INT;
v_name VARCHAR2 (10);
BEGIN
SELECT NAME, photo
INTO v_name, blob_loc
FROM blob_table
WHERE ID = NO;
photo_length := DBMS_LOB.getlength (blob_loc);
handle := UTL_FILE.fopen ('USER_PHOTO', v_name || '.jpg', 'w');
temp := TRUNC ((photo_length - 1) / 1000) + 1;
DBMS_OUTPUT.put_line (photo_length || '' || temp);
FOR i IN 1 .. temp LOOP
IF itemp THEN
amount := 1000;
ELSE
amount := photo_length - (temp - 1) * 1000;
END IF;
DBMS_OUTPUT.put_line (amount);
DBMS_LOB.READ (blob_loc, amount, offset, buffer);
offset := offset + 1000;
UTL_FILE.put_raw (handle, buffer);
END LOOP;
UTL_FILE.fclose (handle);
END download_file;
报错如下:
ORA-29285: 文件写入错误
ORA-06512: 在"SYS.UTL_FILE", line 18
ORA-06512: 在"SYS.UTL_FILE", line 1007
ORA-06512: 在"SYS.DOWNLOAD_FILE", line 32
ORA-06512: 在line 5
请求高手帮忙,谢谢!!
回复

使用道具 举报

千问 | 2009-12-28 22:11:19 | 显示全部楼层
在線一直在等待著,求救。謝謝
回复

使用道具 举报

千问 | 2009-12-28 22:11:19 | 显示全部楼层
刚才看错了,还以为是导入。
等我试下。
[ 本帖最后由 20013011094 于 2008-7-4 21:06 编辑 ]
回复

使用道具 举报

千问 | 2009-12-28 22:11:19 | 显示全部楼层
试试
回复

使用道具 举报

千问 | 2009-12-28 22:11:19 | 显示全部楼层
和你遇到的错误一样啊
ORA-29285。郁闷
回复

使用道具 举报

千问 | 2009-12-28 22:11:19 | 显示全部楼层
用纯PL/SQL 不知道咋实现了。出错了,调试不出结果。
考虑用JAVA什么的吧。
回复

使用道具 举报

千问 | 2009-12-28 22:11:19 | 显示全部楼层
看样子只好用java了。谢谢你的帮助
回复

使用道具 举报

千问 | 2009-12-28 22:11:19 | 显示全部楼层
我也是这个问题,怎么会这样?
也是这行出错:
handle := UTL_FILE.fopen ('USER_PHOTO', v_name || '.jpg', 'w');


tt.png (7.58 KB, 下载次数: 6)
下载附件
2009-2-1 13:34 上传

回复

使用道具 举报

千问 | 2009-12-28 22:11:19 | 显示全部楼层
UTL_FILE.fopen 打开模式用'a'
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行