我用的是ODAC 链接oracle数据库,delphi中update BLOB型数据问题困扰了我很久,我发现我直接
v_sql :='update xx_image set image:=in_image where xx1='+xx1;
with dm_db.OraQuery1 do
begin
Close;
Sql.clear;
Sql.Add(v_sql);
ParamByName('in_image').AsOraBlob.LoadFromFile(uri);//uri是图片地址
ExecSQL;
end;
这么写,会报EInternal ERROR,在网上搜了好多也没有合适的解决方法,最后向同事请教,将更新语句写到数据库的存储过程中,然后调用存储过程,这样不会报错了。
调用存储过程语句:
with dm_db.DzdaProc do begin
StoredProcName := 'UPDATE_XX_IMAGE';//存储过程名
PrepareSQL;
ParamByName('in_xx1').AsString := xx1; <
v_sql :='update xx_image set image:=in_image where xx1='+xx1;
with dm_db.OraQuery1 do
begin
Close;
Sql.clear;
Sql.Add(v_sql);
ParamByName('in_image').AsOraBlob.LoadFromFile(uri);//uri是图片地址
ExecSQL;
end;
这么写,会报EInternal ERROR,在网上搜了好多也没有合适的解决方法,最后向同事请教,将更新语句写到数据库的存储过程中,然后调用存储过程,这样不会报错了。
调用存储过程语句:
with dm_db.DzdaProc do begin
StoredProcName := 'UPDATE_XX_IMAGE';//存储过程名
PrepareSQL;
ParamByName('in_xx1').AsString := xx1; <