插入示例 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 ;
|
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。