ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('begin');
    SQLString := 'INSERT PIC(ID, image, ml) VALUES(''55555555'', :id1, ''D:\pho'');';
    
    ADOQuery1.SQL.Add(SQLString);
    ADOQuery1.Parameters.ParamByName('id1').LoadFromFile('D:\pho\80915.jpg', ftBlob);    //ADOQuery1.ExecSQL;    SQLString := 'INSERT PIC(ID, image, ml) VALUES(''6666666666'', :id2, ''D:\pho'');';    ADOQuery1.SQL.Add(SQLString);
    ADOQuery1.Parameters.ParamByName('id2').LoadFromFile('D:\pho\3AEF77A.jpg', ftBlob);
    ADOQuery1.SQL.Add('end;');    ADOQuery1.ExecSQL;
请问以上语句能实现吗?实际执行时报‘转换请求无法实现或不合理’,不知道哪里需要改造?,单条SQL语句是可以是可以实现的,
注:ORACLE数据库目的就是想实现批量插入或更新照片,由于照片数量比较大,所以想采取效率高点的方法。
上述语句就是想循环ADD sql,1000条后再进行提交,不想一条一条的提交,请问还有其他好的方法吗?

解决方案 »

  1.   


    showmessage(ADOQuery1.sql.text)
    看看。
      

  2.   

    你两个SQL语句之间怎么没clear?
    如果你第一句语句执行完后,不给ADOQUERY清空一下,第二条语句会直接插到第一条语句后边,
    那你ADOQUERY里的SQL语句就变成了
    INSERT PIC(ID, image, ml) VALUES(''55555555'', :id1, ''D:\pho'');INSERT PIC(ID, image, ml) VALUES(''6666666666'', :id2, ''D:\pho'');
    这个样子,执行的时候当然在会报错了
      

  3.   

    谢谢楼上的回复你没明白我的本意,我的意思就是不断的ADD SQL语句,加到100条或更多,我才提交(执行)一下,这样会提高效率,但不知道这样能否实现还有其它方式进行批量提交BLOB字段的?