1 先插入普通列数据,遇到大对象列使用empty_blob()函数构造一个空的指向到表定义使分配的大对象存储空间中 2 声明blob的变量,使用select into语句将blob变量指向到empty_blob()指向的空间 3 声明bfile的变量,使用bfilename()函数将bfile的变量指向到待存储的文件 4 使用DBMS_LOB.Open()方法将bfile变量指向的文件打开 5 使用DBMS_LOB.loadFromFile()将bfile变量指向的文件写入到blob变量指向的存储空间中 6 使用DBMS_LOB.Close()方法将bfile变量指向的文件关闭Create or replace procedure setLob(vfn varchar2) as varB Blob; varF Bfile; vno number(8); Begin varF := bfileName('MYDIR',vfn); DBMS_LOB.Open(varF); select max(no) into vno from myLob; if vno is null then vno := 1; else vno := vno +1; end if; insert into mylob values (vno,vfn,empty_blob()); select myFile into varB from myLob where no = vno for update; DBMS_LOB.loadFromFile(varB,varF,DBMS_LOB.GetLength(varF)); DBMS_LOB.Close(varF); commit; End; /
楼主【xumin51333】截止到2008-07-18 17:34:15的历史汇总数据(不包括此帖):
发帖的总数量:1 发帖的总分数:30 每贴平均分数:30
回帖的总数量:1 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:1 结贴的总分数:30
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
2 声明blob的变量,使用select into语句将blob变量指向到empty_blob()指向的空间
3 声明bfile的变量,使用bfilename()函数将bfile的变量指向到待存储的文件
4 使用DBMS_LOB.Open()方法将bfile变量指向的文件打开
5 使用DBMS_LOB.loadFromFile()将bfile变量指向的文件写入到blob变量指向的存储空间中
6 使用DBMS_LOB.Close()方法将bfile变量指向的文件关闭Create or replace procedure setLob(vfn varchar2) as
varB Blob;
varF Bfile;
vno number(8);
Begin
varF := bfileName('MYDIR',vfn);
DBMS_LOB.Open(varF);
select max(no) into vno from myLob;
if vno is null then
vno := 1;
else
vno := vno +1;
end if;
insert into mylob values (vno,vfn,empty_blob());
select myFile into varB from myLob where no = vno for update;
DBMS_LOB.loadFromFile(varB,varF,DBMS_LOB.GetLength(varF));
DBMS_LOB.Close(varF);
commit;
End;
/
http://www.java2000.net/viewthread.jsp?tid=3164关键在于
1 启动事务
2 insert ... empty_blob();
3 select ... for update