Hi,

There is only one way to update a CLOB field ?
We use TLobLocator and it work well, since we dont have to audit our Database.

I tested all 3 documented used of TLobLocator in DOA\Doc\Manual.pdf

Example - Updating LOB data

First:
select no, INSTSGML from EVL where no = 100 for update
with OracleQuery2 do
begin
Execute;
LOB := LOBField('INSTSGML');
LOB.LoadFromFile('c:\toto.txt'); Example - Updating LOB data
LOB.Trim; //
LOB.Free;
end;

Second:
//update EVL set InstSGML = empty_Clob()
where no = 100
returning InstSGML into :MyInstSGML

with OracleQuery1 do
begin
// Create a new BLOB (initially Null)
LOB := TLOBLocator.Create(OracleSession1, otCLOB);
// Assign it to the returning variable
SetComplexVariable('MyInstSGML', LOB);
Execute;
LOB.LoadFromFile('c:\toto.txt'); // LOB.Write(Buffer, 100);
LOB.Free;
end;


third:
//update EVL set no = :no, instsgml = :instsgml where no = 100

with OracleQuery3 do
begin
SetVariable('no', 100);
// Create a new temporary BLOB and write the data
LOB := TLOBLocator.CreateTemporary(OracleSession1, otCLOB, True);
LOB.LoadFromFile('c:\toto.txt'); // LOB.Write(Buffer, 100);
// Assign it to the returning variable
SetComplexVariable('INSTSGML', LOB);
Execute;
LOB.Free;
end;

And in all case, the SQLBind column of the audit table is blank for the CLOB Field. However all other fields passing by variable apears in SQLBind... only the TLobLocator dont apear.. and it trigger no other query in my audit... it just seem to be magic when it update the CLOB field.

Thanks to help me to Audit my database for any change...

Patrick