在项目开发过程中经常要需要存储一个文档或一幅图片,请问怎样实现呢?

解决方案 »

  1.   

    1.存文件路径
    2.存blob一般我用第1种。
      

  2.   


    SQL> conn sys as sysdba
    输入口令: ***
    已连接。
    SQL> create or replace directory pic_dir as 'D:\pic'
      2  /目录已创建。
    SQL> grant read,write on directory pic_dir to scott
      2  /授权成功。SQL> create table tb_pic(id varchar2(10),images blob)
      2  /表已创建。SQL> edi
    已写入 file afiedt.buf  1  create or replace procedure proc_pic(v_id varchar2,filename varchar2)
      2  as
      3  f_lob bfile;
      4  b_lob blob;
      5  begin
      6  insert into tb_pic values(v_id,empty_blob()) return images into b_lob;
      7  f_lob:=bfilename('PIC_DIR',FILENAME);
      8  dbms_lob.fileopen(f_lob,dbms_lob.file_readonly);
      9  dbms_lob.loadfromfile(b_lob,f_lob,dbms_lob.getlength(f_lob));
     10  dbms_lob.fileclose(f_lob);
     11  commit;
     12* end;
    SQL> /过程已创建。SQL> exec proc_pic('tp1','tp1.jpg')PL/SQL 过程已成功完成。
      

  3.   

    create or replace procedure proc_pic(v_id varchar2,filename varchar2)
      2 as
      3 f_lob bfile;
      4 b_lob blob;
      5 begin
      6 insert into tb_pic values(v_id,empty_blob()) return images into b_lob;
      7 f_lob:=bfilename('PIC_DIR',FILENAME);
      8 dbms_lob.fileopen(f_lob,dbms_lob.file_readonly);
      9 dbms_lob.loadfromfile(b_lob,f_lob,dbms_lob.getlength(f_lob));
     10 dbms_lob.fileclose(f_lob);
     11 commit;
     12* end;这段编译会出错啊,错误是编译有错。
      

  4.   

    SQL>  call IMG_INSERT('1','f_TEST.jpg');
     
    call IMG_INSERT('1','f_TEST.jpg')
     
    ORA-22288: 文件或 LOB 操作FILEOPEN失败
    系统找不到指定的文件。
    ORA-06512: 在 "SYS.DBMS_LOB", line 523
    ORA-06512: 在 "SYS.IMG_INSERT", line 8
     这是什么原因呢?
      

  5.   

    试下绝对路径
    SQL> exec proc_pic('tp1','D:\tp1.jpg')