我现在做一个数据升级器,需要把原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定位器无效.重分酬谢!!!!
我总结了以前的关于向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定位器无效.重分酬谢!!!!
解决方案 »
- 数据溢出select (max(lcode)+1) from table where ...
- 请教关于DELPHI编程问题附源码(急)
- 关于TXMLDocument的问题
- 请问如何判断edit的字符串是否为数字?
- 这个错误是怎么回事?
- 如何在DBGrid中设定选中记录时光标栅的背景色及字体颜色呢?
- 异乡的女友今天生日,各位同仁们谁手里有比较漂亮或特别有趣的贺卡?请斑竹手下留情,拜托了!
- 请问怎样清除image上已画好的图象?
- 刚学Delphi不久遇到的一个简单问题,请各位Delphi前辈帮忙,总是很菜
- 关于文本的一些操作,高手指点下哈
- 一个病毒的设想(一个另类的病毒)^-^
- 新手提问:弱弱的问一个
插入记录时不要对该字段赋值.然后就可以了.