Du kannst doch mit den ODAC-Kompos auch anonyme Blöcke absetzen, oder?
Ich habe mir die ODAC noch nicht angeschaut (sollen ja ganz gut sein...), so würde es mit Direct Oracle
Access aussehen:
Dadurch schickst du alles in einem Stück an den Server. Transaktions- & Fehlerhandling wird er dann übernehmen.
Bei einem Fehler gibt es ein Rollback, die Fehlermeldung steht dann in ErrorStr.
Delphi-Quellcode:
Var
ErrorStr :
String;
Begin
With OracleQuery
Do
Begin
SQL.Text :=
'
Begin' + #10 +
'
Update DeineTabelle' + #10 +
'
Set EquipmentID = :i_EquipID' + #10 +
'
WHERE FileName = :i_FileName;' + #10 +
'
' + #10 +
'
Commit;' + #10 +
'
Exception' + #10 +
'
When Others Then' + #10 +
'
Rollback;' + #10 +
'
:o_Errors := Sqlerrm;' + #10 +
'
End;';
If Variables.Count = 0
Then
Begin
DeclareVariable('
i_EquipID', otInteger);
DeclareVariable('
i_FileName', otString);
DeclareVariable('
o_Errors', otString);
End;
SetVariable('
i_FileName', PDSFName);
SetVariable('
i_EquipID', EquipmentID);
Execute;
ErrorStr := GetVAriable('
o_Errors');
End;
MessageDlg(ErrorStr, mtError, [mbOK], 0);
End;