或许你测试的时候插入的不是blob类型的?不然你单步测试看看

解决方案 »

  1.   

    能不能这样添加 我就不清楚了,但是你传图片的路径
    首先创建一个路径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;
      

  2.   

    恩,谢谢。问题已经解决了,就如你的存储过程一样,不需要传blob类型,直接给一个文件路径就可以了。再问一个相关的问题,这样进行插入的话,我是不是必须去d:\pic下面去添加呢?这样一来路径就写死了?有没有更好的办法呢.谢谢。稍后结贴...
      

  3.   

    加个路径参数 过程里 加个类似这样的动态sql,execute immediate 'create or replace directory IMAGES as'||路径参数;