Oracle Insert BLOB

來源:互聯網
上載者:User

標籤:png   代碼   class   span   bsp   view   file   replace   empty   

How to Insert Blob data(image, video) into oracle BLOB sizeIn this post it is shown how I can insert Blob data link image video into oracle database and also how I can determine the size of the BLOB data from oracle.

1)Create Directory Where BLOB resides.
create or replace directory temp as ‘/oradata2‘;

2)Grant read permission to the user who work with this directory.
grant read on directory temp to arju;

3)Create the  Table which holds lob object.
-- the storage table for the image file
CREATE TABLE pdm (
dname VARCHAR2(30), -- directory name
sname VARCHAR2(30), -- subdirectory name
fname VARCHAR2(30), -- file name
iblob BLOB); -- image file

4)Create the procedure that insert BLOB objects.

-- create the procedure to load the file
CREATE OR REPLACE PROCEDURE load_file (
pdname VARCHAR2,
psname VARCHAR2,
pfname VARCHAR2) IS

src_file BFILE;
dst_file BLOB;
lgh_file BINARY_INTEGER;
BEGIN
src_file := bfilename(‘TEMP‘, pfname);

-- insert a NULL record to lock
INSERT INTO pdm
(dname, sname, fname, iblob)
VALUES
(pdname, psname, pfname, EMPTY_BLOB())
RETURNING iblob INTO dst_file;

-- lock record
SELECT iblob
INTO dst_file
FROM pdm
WHERE dname = pdname
AND sname = psname
AND fname = pfname
FOR UPDATE;

-- open the file
dbms_lob.fileopen(src_file, dbms_lob.file_readonly);

-- determine length
lgh_file := dbms_lob.getlength(src_file);

-- read the file
dbms_lob.loadfromfile(dst_file, src_file, lgh_file);

-- update the blob field
UPDATE pdm
SET iblob = dst_file
WHERE dname = pdname
AND sname = psname
AND fname = pfname;

-- close file
dbms_lob.fileclose(src_file);
END load_file;
/

5)Execute the Procedure.

SQL> exec load_file(‘TEMP‘,‘This is Image‘,‘tritha7.png‘);
PL/SQL procedure successfully completed.

6) From OS see the BLOB size.

SQL> !ls -l /oradata2/tritha7.png
-rwxr-xr-x 1 oracle oinstall 21150 Jun 9 01:55 /oradata2/tritha7.png

7)From Oracle Determine Blob size.
1 declare
2 a blob;
3 begin
4 select iblob into a from pdm;
5 dbms_output.put_line(dbms_lob.getlength(a));
6* end;
SQL> /

PL/SQL procedure successfully completed.

SQL> set serverout on
SQL> /
21150來源:http://space.itpub.net/16860121/viewspace-717065 

最近遇到好多需要儲存Oracle BLOB 需求。 眾所周知,BLOB 是用來儲存圖片、PDF、等大資料對象的。由於公司的需要我們所有的資料庫操作都要使用預存程序來操作。所以首先先貼上一個BLOB儲存的預存程序供大家參考:

Sql代碼
  1. create or replace  
  2. procedure NDSSP_backup_fund (fund_id_in in varchar2 ,selector_in in varchar2,   
  3. time_in in timestamp,blob_in in BLOB)    
  4.   is  
  5.     key number;   
  6.     blob_tmp blob;   
  7.   begin  
  8.     delete from fund_backup bf where bf.selector = selector_in and bf.fund_id = fund_id_in;   
  9.     select fund_backup_seq.nextval into key from dual;   
  10.     insert into fund_backup values(key,selector_in,fund_id_in,empty_blob(),time_in);   
  11.     select content into  blob_tmp from fund_backup where id = key for update;   
  12.     dbms_lob.copy(blob_tmp, blob_in, dbms_lob.getLength(blob_in));   
  13.   end NDSSP_backup_fund;  
大家只要關注BLOB儲存的部分就好了,其他的部分都可以忽略。正如大家所看到的,我們想要調用這個預存程序,必須要傳遞一個BLOB 對象。來源:http://lei6744.iteye.com/blog/1127608

Oracle Insert BLOB

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.