您好,登錄后才能下訂單哦!
插入示例 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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。