Bonjour,
je reprends un package PL/SQL et je m'interroge sur le comportement de plusieurs sections.
Je vous en donne un exemple simplifié.
Donc ma question est la suivante: combien de transactions sont ouvertes par l'exécution de ce segment de code? Je ne parviens pas à déterminer quel est le comportement d'Oracle lorsque des ordres "LMD" sont appelés dans une boucle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 select F11, F21, F31 bulk collect into var1, var2, var3 from MaTable1 Begin Forall i in var1.First...var1.Last insert into MaTable2 (F12, F22, F32) values (var1(i), var2(i), var3(i)); Exception when others then Rollback; End; Commit;
Chaque ordre Insert ouvre implicitement une nouvelle transaction mais quand est elle fermée (Insert suivant, ordre Commit final)?
Ou alors n'y a t'il qu'une transaction globale ouverte par le begin puis terminée par le rollback ou le commit?
L'idée est de savoir si une telle requête peut faire grossir le tablespace UNDO de manière importante ou non.
Merci d'avance!
Note: la base est sous Oracle 10g
Partager