数据库中如何插入修改图片BLOB字段
插入示例
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');
3. 验证结果
select * from IMAGE_LOB;
修改示例
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;
/
2. 验证结果
select * from IMAGE_LOB;
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。