我想实现的是由存储过程从blob字段中提取二进制数据,然后存入文件,文件类型为EPS或者图片。
创建存储过程的代码是在网络上摘取的,通过编译,但是出了一些问题。
 
创建存储Directory  
create or replace directory BLOBDIR as 'D:oradataPic';创建存储过程  
CREATE OR REPLACE PROCEDURE eygle_dump_blob (piname varchar2,poname varchar2) IS
l_file UTL_FILE.FILE_TYPE;
l_buffer RAW(32767);
l_amount BINARY_INTEGER := 32767;
l_pos INTEGER := 1;
l_blob BLOB;
l_blob_len INTEGER;
BEGIN
 SELECT FPIC  INTO l_blob  WHERE FNAME = piname;
l_blob_len := DBMS_LOB.GETLENGTH(l_blob);
l_file := UTL_FILE.FOPEN('BLOBDIR',poname,'wb', 32767);
WHILE l_pos < l_blob_len LOOP
DBMS_LOB.READ (l_blob, l_amount, l_pos, l_buffer);
UTL_FILE.PUT_RAW(l_file, l_buffer, TRUE);
l_pos := l_pos l_amount;
END LOOP;
UTL_FILE.FCLOSE(l_file);
END;
/错误提示:
ORA-29285 文件写入错误!
ORA-06512 在SYS.UTL_FILE line 18 
ORA-06512 在SYS.UTL_FILE line 1007 
ORA-06512 在eygle_dump_blob  line .. 
ORA-06512 在 line 1 
 
主要的问题是:
1、出现写入文件错误的提示下。
2、同时我导出的eps数据会和原文件大小不一致,但是可以通过软件打开。
希望大家能抽出些闲暇时间看一下。
非常感谢!!!