在DELPHI中这样:  
query1.sql.text:='insert  into  t  values(1,:x)';  
query1.parameters.parameterbyname('x').datatype:=ftblob;  
query1.parameters.parameterbyname('x').LoadFromStream(stream);  
query1.ExecSQL;  
 
 
stream是读入大字段类容的流,比如读入了一个文件,但文件如果大点就会出错  
好像ORACLE有专门提交BLOB字段的SQL语法,但忘记了,哪位指点一下  
 
 

解决方案 »

  1.   

    将数据流转成16进制字符串。。小于2K的数据可以直接用
    insert into tb_name (blobetest) values (hextoraw('942SDFER234'))这种型式大于2K的可以用。
    Declare
    test BOLB;
    begin
    insert into tb_name (blobetest) values (EMPTY_BLOB()) RETURNING blobtest  into  test;
    DBMS_LOB.WRITE(test,1,2000,HEXTORAW('AF234234345'));
    DBMS_LOB.WRITE(test,2001,4000,HEXTORAW('AF234234345'));
    .
    .
    .end;
    类拟 这种方式 
      

  2.   

    好久没上来了,
    请问 black_fox(black_fox) :
    有没有系统级的函数将将数据流转成16进制字符串?如果是按位来转换,估计太慢了。
      

  3.   

    你的oracle是哪个版本的?低版本的oracle的blob字段就是有问题,换成row(记不清楚了)就可以了。高版本的就这种没问题了
      

  4.   

    不会吧,我的ORACLE是9i版的
    是不是要对数据库进行配置?
      

  5.   

    : sunling(孙凌) 
    暂时还没有发现。。呵呵。不过你在COM中写一个吧。我是这样做的
      

  6.   

    black_fox(black_fox),
    的方法好用的,我试过了