读取oracle bfile字段,ORACLE中BFILE字段的使用研究_oracle
因為做項目,需要使用BFILE字段存儲圖像文件,所以進行了一些研究。
bfile字段實際的文件存儲在文件系統中,字段中存儲的是文件定位指針.bfile對
oracle來說是只讀的,也不參與事務性控制和數據恢復
bfile的基本操作如下:
1.先在oracle數據庫中下面我們建立一個目錄別名,用于將文件定位指針映射到文
件系統:
create DIRECTORY 'tmpdir' AS '/tmp';
tmpdir表示邏輯目錄名,'/tmp'是實際目錄。 注意該目錄oracle應該有讀權限
然后根據需要授權
GRANT READ ON DIRECTORY bfile_dir1 TO scott;
建立一個含有bfile字段的表
create table bfiletest(id number(3), fname bfile);
建立一個含有BLOB字段的表
create table blobtest(id number(3),ablob blob);
2.插入數據
這里需要使用bfilename來進行bfile字段的insert 或者 update操作
INSERT INTO bfiletest
VALUES (1, BFILENAME ('tmpdir', 'tmptest'));
bfilename的參數1是DIRECTORY名,參數2是文件名。注意:這一行中插入的是
一個指向/tmp/tmptest的文件定位指針映射,不是文件本身。
3.讀取bfile
通過使用dbms_lob包進行可以對bfile讀入到blob/clob對象中操作(只讀)
CREATE OR REPLACE PROCEDURE loadLOBFromBFILE_proc(
TID IN NUMBER,rfilename in varchar2,rfiledir in varchar2,upmessage out varchar2)
AS
Dest_loc?????? BLOB;
Src_loc??????? BFILE;
BEGIN
INSERT INTO BLOBTEST(ID,ABLOB) VALUES(TID,EMPTY_BLOB()) RETURN ABLOB INTO DEST_LOC;
Src_loc := BFILENAME(rfiledir,rfilename);
/* 如果bfile文件實際存在 */
IF (DBMS_LOB.FILEEXISTS(Src_loc) != 0)
THEN
/* 打開bfile源文件 */
DBMS_LOB.OPEN(Src_loc, DBMS_LOB.LOB_READONLY);
/* 打開目標blob: */
DBMS_LOB.OPEN(Dest_loc, DBMS_LOB.LOB_READWRITE);
/*從文件中裝入 */
DBMS_LOB.LOADFROMFILE(Dest_loc, Src_loc,DBMS_LOB.GETLENGTH(Src_loc));
/* 記得關閉: */
DBMS_LOB.CLOSE(Dest_loc);
DBMS_LOB.CLOSE(Src_loc);
COMMIT;
upmessage := '0';
END IF;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
upmessage := '操作失敗';
END;
歡迎大家閱讀《ORACLE中BFILE字段的使用研究_oracle》,跪求各位點評,若覺得好的話請收藏本文,by 搞代碼
微信 賞一包辣條吧~
支付寶 賞一聽可樂吧~
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的读取oracle bfile字段,ORACLE中BFILE字段的使用研究_oracle的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 平板签名大屏显示平板签名大屏显示不出来
- 下一篇: int函数在Oracle,vb中int是