BatchLongTran (CM)
De Wiki1000
(Différences entre les versions)
Ligne 28 : | Ligne 28 : | ||
begin | begin | ||
doProcessItem(idx); | doProcessItem(idx); | ||
− | if idx mod 100=0 then ClassManager.BatchLongTran; | + | ClassManager.BatchLongTran; |
+ | // same as : | ||
+ | // if idx mod 100=0 then ClassManager.BatchLongTran; | ||
end; | end; | ||
ClassManager.CommitLongTran; | ClassManager.CommitLongTran; |
Version du 15 mars 2013 à 15:03
procedure BatchLongTran;
Cette procédure valide et transmet les objets en transaction au serveur SQL si le nombre d'objet est supérieur ou égale à BatchSize de la transaction.
Pas de paramètre |
Les remarques suivantes s'appliquent dans un contexte d'exécution parallèle :
- BatchLongTran ne peut pas être appelé à partir de code parallélisé, l'appel est ignoré.
- BatchLongTran est un point de synchronisation pour le code parallélisé, l'appel de BatchLongTran :
- Stop le démarrage de nouvelle exécution parallèle
- Attend que toutes les exécutions parallèles en cours soient terminées
- Exécute le batch
- Redémarre l'exécution du code parallélisé.
Exemple :
var idx:Integer; begin ClassManager.BeginLonTran(100,'MaClass'); try for idx:=0 to VeryBigInt do begin doProcessItem(idx); ClassManager.BatchLongTran; // same as : // if idx mod 100=0 then ClassManager.BatchLongTran; end; ClassManager.CommitLongTran; except ClassManager.RollBackLongTran; raise; end; end;
Voir aussi :