I am using FireDac to connect to my oracle database. To insert blob fields I use this code:
procedure TForm1.btn1Click(Sender: TObject);
begin
try
fdqry1.Open('select * from Tbl_Image where length(fld_content) > 0');
try
while not fdqry1.Eof do
begin
fdqry2.Close;
fdqry2.SQL.Text:= 'insert into temp_blob (fld_ID, fld_CONTENT) values(:id, EMPTY_BLOB()) ' +
'RETURNING fld_CONTENT INTO :content';
fdqry2.Params[0].AsInteger:= fdqry1.FieldByName('fld_ID').AsInteger;
fdqry2.Params[1].DataType:= ftOraBlob;
fdqry2.Params[1].AsStream:= fdqry1.CreateBlobStream(fdqry1.FieldByName('fld_CONTENT'), bmRead);
con1.StartTransaction;
fdqry2.ExecSQL;
con1.Commit;
fdqry2.CloseStreams;
fdqry1.Next;
end;
finally
fdqry1.Close;
fdqry2.Close;
end;
except on E: Exception do
begin
con1.Rollback;
ShowMessage(E.Message);
end;
end;
end;
This code has no errors, but is not working. Why the target field is null?