I guess that if TOracleDataSet has some new property something like DMLExclFields (list of fields separated by semicolons) it will allow to process only part of fields from complex queries in OnApplyRecord and allow default InternalInsertUpdate to process others, just excluding those fields from default generated DML statement using that new property.
The pitiful thing is that changes in fields with type fkInternalCalc do not fire that OnApplyRecord event only fkData fields do, but all of them are included then in that default DML statement which in case of complex (more than one table etc.) queries leads to the error.
As a matter of fact I put this functionality in my copy of DOA and it works just fine, relief me from coding complicated OnApplyRecord events I just do necessary part and leave that Applied parameter False allowing TOracleDataSet handle all other parts (retrieving rowids, updating blobs, etc.)