通过存储过程来上传BLOG

1.建立数据表
create table aaa(id varchar2(9) not null,img blob);

2.存储过程
create or replace procedure pro_upd(
  sid in string,
  bblob in blob  default empty_blob())
is
 lobloc blob;
 vLength integer;
begin  
  insert into aaa(id,img) values(sid,empty_blob());
     IF (bblob IS NOT NULL) THEN 
        SELECT img INTO lobloc FROM aaa WHERE ID = sid FOR UPDATE; 
        vLength := dbms_lob.getlength(bblob);
 DBMS_LOB.OPEN(lobloc,DBMS_LOB.lob_readwrite);
 DBMS_LOB.copy(lobloc,bblob,vLength);
      END IF;
      commit;
   exception  
         when    others    then  
         rollback;  
end;

3.程序代码
  用的ODAC的oraquery
  orqry1.SQL.Text := 'call pro_upd(:id,:bblob)';
  orqry1.Params.ParamByName('id').Value := '123';
  orqry1.Params.ParamByName('bblob').LoadFromFile('D:\work\照片上传\pic\005.jpg',ftBlob);
  orqry1.ExecSQL; 

目的:就是把图片上传到数据库,结果4k一下的可以成功上传;4k以上稍小点的图片就 ORA-03113: 通信通道的文件结束如果几百k就会报ora-12571错误;经过两天的努力发现的一个规律!

继续找原因。。。。。。
137430.html

坏男孩 2007-08-17 01:36 发表评论
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值