把word文档存到oracle8.0.5里面出现ORA-01461错误!!大侠救命!!急(100分)

  • 主题发起人 说不清楚
  • 开始时间

说不清楚

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的是DBExpress,BCB6的数据库新驱动,oracle8.0.5
create table work_map
(
work_no varchar2 (20) not null,
map_data blob ,
remark varchar2 (512),
constraints pk_work_map primary key(work_no)
);
上面是表,代码如下
TOpenDialog *od=new TOpenDialog(Application);
od->Title = "选择word文档";
od->DefaultExt = "DOC";
od->FileName = "*.doc";
od->Filter = "Dat files (*.doc)|*.DOC";
if (od->Execute())
{
TMemoryStream *tmpStream = new TMemoryStream();
tmpStream->LoadFromFile(od->FileName);
BYTE* Data = (BYTE*)tmpStream->Memory;
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("INSERT INTO work_map values:)work_no,:map_data,:remark)");
Query1->ParamByName("work_no")->AsString = "2002-12-1";
Query1->ParamByName("map_data")->LoadFromStream(tmpStream,ftBlob);
Query1->ParamByName("remark")->AsString = "111";
if(!Query1->Prepared)
Query1->Prepared = true ;
Query1->ExecSQL() ;
delete tmpStream;
}

运行到Query1->ExecSQL()出错,信息
ORA-01461:仅可以为插入LONG列的LONG值赋值。
莫名其妙,
高人指点。。。。。。。。。。。。。。。。。。。。。。。。。。。。

 
还是blob定位符的问题

http://www.delphibbs.com/delphibbs/dispq.asp?lid=1029568
 
blob类型使用有问题。
805的blob不完善,建议升级。
 
ORA-01461 can bind a LONG value only for insert into a LONG column
Cause: An attempt was made to insert a value from a LONG datatype into another
datatype. This is not allowed.
Action: Do not try to insert LONG datatypes into other types of columns.
 
试试将blob类型的列改为LONG RAW。
 
把ftBlob改成ftOraBlob之后就出现我说的问题,不升级oracle的情况下有中庸一点的暂时解决办法吗???
 
试试吧!
805最好用long raw,但是long raw还是有空间限制。
我在用blob型时已经使用的是8i了,所有的问题都是我的使用方法,而和oracle本身无关,
所以有点说不清楚。
建议:增加一字段,最好是序列,没有实际作用,只是作为一唯一性索引。
 
顶部