可以参考一下这个过程
SQL> CREATE OR REPLACE PROCEDURE eygle_load_blob (pfname VARCHAR2,pdesc varchar2)
2IS
3src_file BFILE;
4dst_file BLOB;
5lgh_file BINARY_INTEGER;
6BEGIN
7 src_file := bfilename('BLOBDIR', pfname);
8
9 INSERT INTO eygle_blob (fid,fname,fdesc,fpic)
10 VALUES (S_EYGLE_SEQ.Nextval,pfname,pdesc,EMPTY_BLOB())
11 RETURNING fpic INTO dst_file;
12
13 SELECT fpic INTO dst_file
14 FROM eygle_blobWHERE fname = pfname FOR UPDATE;
15
16 dbms_lob.fileopen(src_file, dbms_lob.file_readonly);
17 lgh_file := dbms_lob.getlength(src_file);
18 dbms_lob.loadfromfile(dst_file, src_file, lgh_file);
19
20UPDATE eygle_blobSET fpic = dst_file
21WHERE fname = pfname;
22
23dbms_lob.fileclose(src_file);
24commit;
25END eygle_load_blob;
26/ |