我现在做一个数据升级器,需要把原Access表中的图象数据转到Oracle中,用了如下的插入方法,但总是出错.已经好多天了,请大家帮帮我.
我总结了以前的关于向Oracle数据库插入Blob字段的帖子,写了如下的语句.
         
strSQL := 'INSERT INTO MEN (PERSONID,FACEPHOTO) VALUES(1,EMPTY_BLOB())';
ADOQUERY.Close;
ADOQUERY.SQL.Clear;
ADOQUERY.SQL.Add(strSQL);
ADOQUERY.ExecSQL;
         strBlobSQL := 'UPDATE MEN SET FACEPHOTO=:A1 WHERE PERSONID=1';
BlobStream:=SourceMain.CreateBlobStream(DM.SourceMain.FieldByName('Zmx'),bmRead);
ADOQUERY.Params.ParamByName('A1').LoadFromStream(BlobStream,ftOraBlob);//在此设置的DataTpye
ADOQUERY.Close;
ADOQUERY.SQL.Clear;
ADOQUERY.SQL.Add(strBlobSQL);
ADOQUERY.ExecSQL;
上面的语句,如果是从Access转到SQL SERVER中就成功,但是如果从 Access转到Oracle时就有以下错误.如果我将Params的DataType属性设置为ftBlob时,报错如下:
General SQL error,ORA-01461:仅可以为插入LONG列的LONG值赋值
如果我将Params的DataType属性设置为ftOraBlob时,报错如下:
General SQL error,ORA-22275:指定LOB定位器无效.重分酬谢!!!!