oracle图片及文件插入

oracle图片及文件的插入需用到数据类型bfile、blob及dbms_lob包处理文件,大致逻辑是先将空值插入到表中blob类型,然后对其更新即可。

代码如下:

1.首先在sqlplus下建目录(图片及文件的磁盘物理路径)

SQL> create or replace directory IMAGES as 'd:\';

d:\是我的磁盘下面的文件路径。创建的目录可在oracle字典表all_directories下查看:

 

SQL> select * from all_directories;
 
OWNER           DIRECTORY_NAME           DIRECTORY_PATH
----------------- ------------------------------ ------------------------------------

SYS                         IMAGES                                    d:\

 

2.创建表

-- Create table
create table IMAGES
(
  IID   VARCHAR2(10),
  IMAGE BLOB
)

 

3.创建produre

create or replace procedure p_image(i_id varchar2,i_filename varchar2)
is
  v_flob bfile;
  v_blob blob;
begin
  --将空值插入到表中blob字段
  insert into images values (i_id,empty_blob()) return image into v_blob;


  --将目录下的文件更新到表中blob字段

  --这里IMAGE目录会自动到字典表all_directories查找其关联的磁盘物理路径
  v_flob:=bfilename('IMAGE',i_filename);
  dbms_lob.fileopen(v_flob,dbms_lob.file_readonly);
  dbms_lob.loadfromfile(v_blob,v_flob,dbms_lob.getlength(v_flob));
  dbms_lob.close(v_flob);
end;

4.运行过程

SQL> exec p_image('1','aa.bmp');--1为id,aa.bmp为我的d盘下的图片文件
 
PL/SQL procedure successfully completed

5.查询表

SQL> select * from images;
 
IID        IMAGE
---------- --------
1          <BLOB>

这里的blob即为插入的图片aa.bmp,在编辑窗口可查看其详细信息。

图片如下:

 

你可能感兴趣的:(oracle图片及文件插入)