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,在编辑窗口可查看其详细信息。
图片如下: