插入示例
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
;


|