插入示例

  1. 利用存储过程进行插入数据

–创建存储图片的表

CREATE TABLE IMAGE_LOB (T_ID VARCHAR2 (5) NOT NULL,T_IMAGE BLOB NOT NULL);

–创建存储图片的目录,我这里在本地C盘

CREATE OR REPLACE DIRECTORY IMAGES AS ‘C:’;

–通过存储过程来实现插入

CREATE OR REPLACE PROCEDURE IMG_INSERT (TID VARCHAR2,FILENAME VARCHAR2) AS

F_LOB BFILE;–文件类型

B_LOB BLOB;

BEGIN

–插入空的blob:EMPTY_BLOB ()

INSERT INTO IMAGE_LOB (T_ID, T_IMAGE)

VALUES (TID,EMPTY_BLOB ()) RETURN T_IMAGE INTO B_LOB;

–获取指定目录下的文件

F_LOB:= BFILENAME (‘IMAGES’, FILENAME);

–以只读的方式打开文件

DBMS_LOB.FILEOPEN(F_LOB, DBMS_LOB.FILE_READONLY);

–传递对象

DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB,DBMS_LOB.GETLENGTH (F_LOB));

–关闭原始文件

DBMS_LOB.FILECLOSE (F_LOB);

COMMIT;

END;

/
2. 调用存储过程插入图片

call IMG_INSERT(‘1’,‘1.jpg’);
DM数据库中如何插入、修改图片BLOB字段
3. 验证结果

select * from IMAGE_LOB;
DM数据库中如何插入、修改图片BLOB字段
修改示例

  1. 通过过程进行修改

declare

l_bfile bfile;

l_blob blob;

begin

update IMAGE_LOB set T_IMAGE=empty_blob() where T_ID=1 return T_IMAGE into l_blob;

–图片路径还在C盘,通过系统表SELECT * FROM dba_directories;查询

l_bfile:=bfilename(‘IMAGES’,‘2.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;

/

  1. 验证结果

select * from IMAGE_LOB;
DM数据库中如何插入、修改图片BLOB字段

相关文章: