CREATE TABLE SCIMG (SC_TYPE CHAR(1),SC_NO NUMBER(8) ,IMAGE BLOB,IMG_NAME VARCHAR2(50),
constraint pk_scimg primary key(SC_TYPE,SC_NO) ) ;
select * from scimg
create or replace procedure insert_image(img_dir varchar2,sc_type char,sc_no number,img_name varchar2)
is
--建立存储过程用来数据库中插入图像
img_blob blob;
img_bfile bfile;
begin
/*将通过empty_blob()函数将类型为blob的列初始化为空以便以后填充*/
insert into SCIMG values(sc_type ,sc_no, empty_blob(),img_name)
returning image into img_blob;
img_bfile := bfilename(img_dir,img_name); --获得定位器指向的目录和文件
dbms_output.put_line(dbms_lob.getlength(img_bfile));
if (dbms_lob.fileexists(img_bfile)!=0) then --如果文件定位器指向的文件存在
dbms_lob.fileopen(img_bfile,dbms_lob.file_readonly); --打开目标文件
/*将文件字节流数据加载到指定的LOB类型变量中*/
dbms_lob.loadfromfile(img_blob,img_bfile,dbms_lob.getlength(img_bfile));
dbms_lob.fileclose(img_bfile);--关闭文件
commit;
dbms_output.put_line('已经从'||img_dir||'目录中读取了图片'||img_name||'向表中插入');
else--如果文件定位器指向的文件不存在
dbms_output.put_line('文件没找到');
end if;
exception when others then
dbms_output.put_line(sqlerrm);
end;
select * from scapploc
select * from sccom
select * from scimg
--向表中插入图像
declare
begin
insert_image('IMAGE_PATH','C',100,'patricia.jpg');
commit;
end;