日期:2014-05-17  浏览次数:20943 次

数据库插入图片
我使用plsql developer连接数据库,手动添加能行,也能查出来。但是在对存储过程做测试时,插入图片总是为null,请问数据库大神,问题出在哪里了?
表:picture(id integer,pic blob);
存储过程:
 procedure insertPic(idPin in integer,picPin in blob,result out integer,bz out varchar2) is 
    begin
      insert into picture(id,pic) values(idPin,picPin) ;
       commit;
       result := 0;
      bz :='添加成功';
    exception
      when others then
        result := 1;
        bz := sqlerrm;
    end;
------解决方案--------------------
能不能这样添加 我就不清楚了,但是你传图片的路径
首先创建一个路径
create or replace directory IMAGES as 'd:\pic';  


如下存储过程参考
create or replace procedure insertPic(idPin in integer, 
                                       picPin varchar2 --文件名 如 abc.jpg
                                      ) as
   f_lob bfile; --文件类型
   v_picPin blob;
 begin
   insert into picture
     (id, pic)
   values
     (idPin, empty_blob()) return pic into v_picPin; --插入空的blob
   f_lob := bfilename('IMAGES', picPin); --获取指定目录下的文件
   dbms_lob.fileopen(f_lob, dbms_lob.file_readonly); --以只读的方式打开文件
   dbms_lob.loadfromfile(v_picPin, f_lob, dbms_lob.getlength(f_lob)); --传递对象
   dbms_lob.fileclose(f_lob); --关闭原始文件
   commit;
 end;