|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2003 Messages : 52 ![]() |
bonjour,
J'essaye d'insérer des lignes dans une table munie d'une contrainte d'intégrité. Lorsque les lignes existent déjà, l'insertion plante (très bien). Mais lorsque j'essaye d'insérer des lignes de manière répétitive avec un curseur dans un bloc de code, l'exécution s'arrête au premier échec d'insertion. Comment gérer cette exception et poursuivre l'exécution à la valeur suivante du curseur ? Code :
Code :
Code :
Merci d'avance |
||||||
|
|
00
|
|
|
#2 |
|
Membre expérimenté
![]() Mohamed HouriInscription : mars 2010 Messages : 286 ![]() |
Bonjour,
Vous pouvez: (a) soit encapsuler votre traitement de LOOP dans un BEGIN/EXCEPTION/END bloc afin que chaque itération en erreur soit retenue dans l'exception de ce bloc; par contre prenez soin de bien gérer les exceptions dans ce cas. En effet il faut que vous vous posiez la question essentielle qui est de savoir quoi faire avec les insertions en erreur dans ce cas. (b) soit, si vous êtes sur une version 10g ou plus, d'utiliser le "DML error logging" dont vous trouverez des exemples partout sur internet. Si vous optez pour cette solution pensez alors dans ce cas à lire ce simple article que j'ai écris sur les restrictions du DML error logging http://hourim.wordpress.com/2011/02/...-restrictions/ |
|
|
00
|
|
|
#3 | ||
![]() ![]() |
J'ajouterai qu'une simple jointure annule aussi l'intérêt du curseur :
Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 313 ![]() |
Ou utilisez ForAll avec Save Exceptions: "Handling FORALL Exceptions After FORALL Statement Completes"
|
|
|
10
|
|
|
#5 | ||
|
Membre confirmé
![]() Inscription : février 2012 Messages : 203 ![]() |
Comme dis plus haut, il suffit de gérer cette exception au niveau de la boucle
Code :
|
||
|
|
01
|
Copyright © 2000-2012 - www.developpez.com