Oracle数据库中插入图片BLOB字段的方法

来源:互联网 发布:网络语言王炸什么意思 编辑:程序博客网 时间:2024/05/20 18:16

 1./opt/pic/目录下存放图片文件

 2.先创建表,存储图片的字段为BLOB类型,创建表可以用sql也可以用navicat等工具,先插入数据填入其他字段,BLOB为null不填

  CREATE TABLE PICTURE_SRC ( "ID" NUMBER NOT NULL ENABLE, "IDENTIFICATION" VARCHAR2(255), "PROVINCE" VARCHAR2(255), 

"NAME" VARCHAR2(255), "SEX" VARCHAR2(255), "PIC" BLOB, "PICOLD" BLOB, PRIMARY KEY ("ID");

 3.创建图片目录,images为目录名,如果Oracle安装再windows上,则目录格式为'd:\pic\',先将图片文件保存到/opt/pic/目录下,然后在Linux的sql命令行下执行:

  create or replace directory images as '/opt/pic/';

 4.通过update方式插入图片(BLOB字段)

 方法1:直接插入图片(可在navcate中执行)

 declare
   l_bfile bfile;
   l_blob blob;
 begin
   update PICTURE_SRC set PIC=empty_blob() where ID=5 
   return PIC into l_blob;
   l_bfile:=bfilename('images','5.jpg');
   dbms_lob.open(l_bfile,dbms_lob.file_readonly);
   dbms_lob.loadfromfile(l_blob,l_bfile,dbms_lob.getlength(l_bfile));
   dbms_lob.close(l_bfile);
   commit;
 end;
 /
 

 方法2:创建过程插入(只能在命令行执行)

 create or replace procedure img_insert(tg_id NUMBER ,tg_filename VARCHAR2) as
   l_bfile bfile;
   l_blob blob;
 begin
   update PICTURE_SRC set PIC=empty_blob() where ID=tg_id return PIC into l_blob;
   l_bfile:=bfilename('images',tg_filename);
   dbms_lob.open(l_bfile,dbms_lob.file_readonly);
   dbms_lob.loadfromfile(l_blob,l_bfile,dbms_lob.getlength(l_bfile));
   dbms_lob.close(l_bfile);
   commit;
 --end img_insert;

 end;

--下面命令exec只能在命令行执行,不能在navicat中执行,否则会报错ORA-00900: invalid SQL statement

SQL> exec img_insert(5,'5.jpg');

PL/SQL procedure successfully completed.


原创粉丝点击