Casimiro, quizás sea un error, o quizás me olvido de algo, pero, ¿el crear el objeto no debería estar fuera del try?
Código Delphi
[-]
var
SP:TIBCStoredProc;
begin
SP := TIBCStoredProc.Create( Nil );
try
SP.StoredProcName := 'SP_LOGO_UPD';
SP.Prepare;
SP.ParamByName( 'IMG_RPTFINAL' ).LoadFromFile( sPICT, ftBlob );
Data.IBCTran.StartTransaction;
SP.ExecProc;
Data.IBCTran.Commit;
finally
SP.Free; end;
end;
La razón es que si hay un error al crear ese objeto, en tu código iría al finally a destruirlo y muy posiblemente dará otra excepción porque no se pudo destruir (al no estar totalmente creado) ¿no?